自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lightWay的博客

永远不要忘记了学习

  • 博客(61)
  • 收藏
  • 关注

原创 mac环境下安装composer

mac环境下安装composermac环境下安装composer什么是composer安装方式说明安装步骤完什么是composer Composer是PHP中用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer会帮你安装这些依赖的库文件。 —— 百度百科安装方式...

2018-03-15 18:31:44 493

原创 mac在MAMP环境如何配置ioncube

前言mac下PHP环境有哪些MAMP命令行前言前两天,搞一个项目的二次开发的时候,发现部署完了之后,运行不了,然后查了下,发现是源码用了ioncube加密,按照官方给的方式,安装了,php.ini 文件也配置了,就是提示找不到,最后发现原来是 mamp 捣的鬼,写给有需要的人。mac下PHP环境有哪些图像界面软件 类似 xampp 、mamp这些...

2017-12-26 22:07:12 1291

原创 PHP安装ioncube扩展

什么是Ioncube安装步骤检测php版本下载loader-wizardphp解压移动到指定目录运行loader-wizardphp程序按照程序给出的步骤开始什么是Ioncube ionCube was founded in 2002, and introduced tools to protect software written using the PHP programming

2017-12-24 23:47:48 19686

原创 MAC iTerm2 下 使用 lszrz

MAC iTerm2 下 使用 lszrzMAC iTerm2 下 使用 lszrz需要什么什么是 lrzsz为什么需要lszrz具体过程安装lrzsz下载iterm2-zmodem移动到指定位置并赋予可执行权限给iTerm2添加触发器需要什么homebrew包管理工具iTerm2终端命令行wget命令行工具什么是 lrzsz Lrzsz (consisting of

2017-12-23 23:07:42 3005

原创 laravel Task Scheduling(任务调度)在windows下的使用

前言问题解决方案通过计划任务和批处理通过vb脚本实现自动任务的静默执行总结前言  laravel的任务调度是很好用的,因为Laravel提供了平滑而又富有表现力地调度器,并且服务器上只需要一个Cron条目即可,这使我们从编写手动写crontab中解放出来,使得程序重新获得定时任务的控制权。 但是,我们发现laravel的文档中只提供了linux/unix下的解决方案,但是我们大多数时候本

2017-09-12 11:49:39 6437

原创 centos7 上面laravel不能访的一个小问题和PDO扩展的安装

今天终于把laravel放到服务器上面去了,但是不知道为什么用ip地址一直访问不了,浏览器报500错误,然后就去浏览器找访问日志查看:可以看出来,项目已经被访问到了,为什么是500呢?在入口文件段一下试试看,于是在/public/index.php里面exit('1')了下,发现浏览器也有输出,这就代表确实是laravel里面除了问题。然后去看了下错误日志,发现提示PDO的问题:

2017-08-07 16:36:16 1305

原创 Centos7 安装高版本PHP

装好了httpd,mysql,我也是走的一路带风,装PHP的时候yum list了下,看见有php.x86_64,就直接安装了,安装好了之后,才发现,centos7默认的php是PHP5.4,作为了个现代PHPer,这也是让我很尴尬,然后手动升级rpm包(添加yum 源),终于成功安装了php5.6,写一下步骤帮助需要的人。如果你不确认你是否有安装PHP,可以执行如下命令查看:# yu

2017-07-04 19:28:16 1478

原创 centos 7 安装卸载apache(httpd)服务

前面我们已经安装好了mysql,今天安装httpd,然后试着访问以下,由于博主已经安装过一次,所以先说卸载,再说安装。卸载首先,要确认下是否有安装过,或者是系统自带了httpd服务,通过以下命令:# rpm -qa | grep httpd或者:# yum list | grep httpd我已经安装过一次了,所以我这边会显示如下:然后我先来卸载我的httpd

2017-06-30 12:51:38 55345 2

原创 centos7 安装mysql

这两天闲来无事,在老马手里买了一个乞丐版的服务器玩玩儿。要装mysql的时候,一直出现服务启动不了的情况,原来也在centos6时代的时候也玩过,有点不一样,网上好多都是copy copy,没有实践过,亲自实践了下,列出血泪史。直接安装额mysql 和 mysql-devel 启动的时候发现一直提示/tmp/mysql.sock 不存在,最后检查了下,发现自己的mysql-server没有安装

2017-06-28 20:05:26 561

原创 反射有什么作用

预留

2017-03-08 23:37:02 528

原创 如何使用反射API

以下面的代码为例子,来直观的认识反射的使用。<?phpclass Person{ public $name; public $gender; public function say() { echo $this->name,"\tis",$this->gender,"\r\n"; } public function __set

2017-03-08 23:36:23 771

原创 反射

面向对象编程中对象被赋予了自省的能力,而这个自省的过程就是反射。反射,直观理解就是更具到达地找到出发地和来源。比方说,我给你一个光秃秃的对象,我可以仅仅通过这个对象就能知道它所属的类,拥有哪些方法。反射指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取信息以及动态调用对象方法的功能称为反射API。

2017-03-06 23:18:24 371

原创 对PHP接口的思考

PHP的接口自始至终一直在被争议,有人说接口很好,有人说接口像鸡肋。首先要明白,好喝不好的判断标准是什么。无疑,这是和Java/C++相比。在上面的例子中,以及讨论了PHP的接口在“面向契约编程”中是不足的,并没有起到应有的作用。其实,在上一章的interface.php代码中,machine类的声明应该在plain类前面。接口提供了一套规范,这是系统提供的,然后machine类提供一组针对接

2017-03-02 22:13:56 3022

原创 接口的作用

接口定义一套规范,描述一个“物”的功能,要求如果现实中的“物”想要成为可用,就必须实现这些基本功能。接口这样描述自己:“对于实现我的所有类,看起来都应该像我现在这个样子”。采用一个特定接口的所有代码都知道对于那个接口会调用什么方法。这便是接口的全部含义。接口常用来作为类与类之间的一个“协议”。接口是抽象类的变体,接口中所有方法都是抽象的,没有一个有程序体。接口除了可以包含方法外,还能包含常

2017-02-25 15:31:41 2364

原创 面向接口编程

这里,首先强调一个概念,面向接口编程并不是一种新的编程范式。

2017-02-25 11:52:48 307

原创 继承和多态

面向对象的优势在于类的复用。继承与多态都是对类进行复用,他们一个是类级别的复用,一个是方法级别的复用。提到继承必须提到组合,两者有何异同?PHP到底有没有多态呢?类的组合与继承各种语言中的多态

2017-02-25 11:45:42 420

转载 深入浅出理解依赖注入

容器,字面上理解就是装东西的东西。常见的变量、对象属性等都可以算是容器。一个容器能够装什么,全部取决于你对该容器的定义。当然,有这样一种容器,它存放的不是文本、数值,而是对象、对象的描述(类、接口)或者是提供对象的回调,通过这种容器,我们得以实现许多高级的功能,其中最常提到的,就是 “解耦” 、“依赖注入(DI)”。本文就从这里开始。IoC 容器 —— Laravel 的核心Lar

2017-02-23 17:27:05 11645 2

原创 各种语言中的多态

多态确切的含义是:同一类的对象收到相同的消息时,会得到不同的结果。而这个消息是不可预测的。多态,顾名思义,就是多种形态,也就是多种结果。

2017-02-21 20:58:04 1078

原创 类的组合与继承

在“对象与类”那篇博客中,我们定义了两个类,一个是person,一个是family;在family类中创建person类中的对象,把这个对象视为family类的一个属性,并调用它的方法处理问题,这种复用方法叫“组合”。还有一种复用方式,就是继承。类与类之间有一种父与子的关系,子类继承父类的属性和方法,称为继承。在继承里,子类拥有父类的方法和属性,同事子类也可以有自己的方法和属性。我们把那一

2017-02-09 18:19:56 1318

原创 windows下面的Docker安装详细

最近在看Docker相关的东西,关于Docker的一系列好处云云,就不一一列举了,有机会在系统整理下。百度搜索出来的Docker大多都是好几年前的,比较老的安装教程,还是原来的下载Docker-install.exe安装的方式,但是我去Docker下载网站的时候发现只有window10专业版本或者企业64位,才可以用这种方式安装,windows7只能通过Docker Toolbox方式来安装。

2017-02-08 18:00:58 3710 1

原创 __toString方法

再看另外一个魔术方法__TOstring(在这里故意这么写,是要说明PHP中方法不区分大小写,但实际开发中还需要注意规范)。当进行测试时,需要知道是否得出正确的数据。比如打印一个对象时,看看这个对象都有哪些属性,其值是什么,如果类定义了__toString方法,就能在测试时,echo打印对象体,对象就会自动条用它所属类定义的__toString方法,格式化输出这个对象所包含的数据。如果没有这个

2017-02-07 15:45:50 1028

原创 __call和__callStatic方法

如何防止调用不存在的方法而出错?一样的道理,使用__call魔术重载方法。__call方法原型如下:mixed __call (string $name, array $arguments)当调用一个不可访问的方法(如未定义,或者不可见)时,__call()方法会被调用。其中$name参数是要调用的方法名称。$arguments参数是一个数组,包含着要传递给方法的参数,如下所示:p

2017-01-28 19:36:30 799

翻译 __set和__get方法

__set和__get是两个比较重要的魔术方法,如下面代码所示。<?phpclass Account{ private $user = 1; private $pwd = 2;}$a = new Account();echo $a->user;$a->name = 5;echo $a->name;echo $a->big;运行这段代码会怎么样呢?结果报错如

2017-01-27 15:16:00 849

原创 魔术方法的应用

魔术方法是以两个下划线“__”开头、具有特殊作用的一些方法,可以看做是PHP的“语法糖”。语法糖指那些没有给计算机语言添加新功能,而只是对人类来说更“甜蜜”的语法。语法糖往往给程序员提供了更多实用的编码方式或者一些技巧性的用法,有益于更好的编码风格,使代码更易读。不过其并没有给语言添加什么新东西。PHP里的引用、SPL等都属于语法糖实际上,上一篇博客中就涉及魔术方法的使用。fa

2017-01-27 14:56:05 622

原创 对象与类

在前面代码(两篇博客)中定义了一个类,并创建了这个类的对象,把前面产生的对象作为这个新对象的一个熟悉,完整代码如下:class Person{ public $name; public $gender; public function say() { echo $this->name,"\tis\t",$this->gender,"\r\n"

2017-01-26 15:38:43 446

原创 对象的“本”

我们需要跟深入地了解这种机制,看对象的“本”。对象是什么?对象在PHP中也是变量的一种,所以先看PHP源码中对变量的定义:#zend/zend.htypedef union_zvalue_value{ long lval;/* long value */ double dval;/* double value */ struct{ char *val;

2017-01-26 12:31:01 323

原创 对象与数组

对象是什么,我们不好解释,也不容易回答,但是我们知道数组是什么。数组的概念比较简单。可以拿数组和对象对比来帮助我们理解对象。对象转化为数组,数组也能转化为对象。数组是由键值对数据组成的,数组的键值对和对象的属性/属性值对十分相似。对象序列化后和数组序列化后的结果是惊人的相似。如下面的代码所示:$student_arr = ['name'=>'tom','gender'=>'male'];ec

2017-01-23 11:48:03 582

原创 对象的“形”

要回答类与对象本质这个问题,我想可以先从“形”的角度来回答。本节以PHP为例,来探讨对象的“形”与“本”的问题。类是我们对一组对象的描述在PHP里,每个类的定义都是以关键字clss开头,后面跟着类名,紧接着一对花括号,里面包含有类成员和方法的定义。如下面代码所示:class Person { public $name; public $gender; pub

2017-01-23 11:47:18 392

原创 面向对象的“形”与“本”

类是对象的抽象组织,对象是类的具体存在。2200年前的战国时期,赵国平原君的食客公孙龙在骑着白马进城时,被守城官以马不能入城拦下,公孙龙即兴演讲,口述“白马非马”一论,守城官无法反驳,于是公孙龙就骑着他的白马(不是马的)进城去了。这就是历史上最经典的一次对面向对象思维的阐述。公孙龙的“白马非马”论如下:“白马非马”,可乎?曰:“可。”曰“何儎?”曰:“马者,所以命形也;白者,所

2017-01-23 11:46:09 355

原创 php魔术方法__invoke

PHP5.3新增了一个叫做__invoke的魔术方法,这样在创建实例后,可以直接调用对象。就是用函数的方式来用对象,比如我现在有个A类,如果我想防止别人直接输出对象,那么我可以这样:class A { public function __invoke() { return '不允许这样使用'; }}$a = new A();echo $a

2017-01-20 18:49:17 1371

原创 php对象转换成字符串

比如我有一个类A:class A{ public $a; public $b; public $c; public function __construct($a, $b, $c) { $this->a = $a; $this->b = $b; $this->c = $c; }}如果我

2017-01-19 18:30:41 16374

原创 面向对象中的序列化和反序列化

序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。在PHP中,可以通过serialize()方法序列化,serialize()返回字符串,此字符串包含了表示value的字节流,可以存储于任何地方。这有利于存储或传递PHP的值,同时不

2017-01-18 17:36:21 931

原创 php类型约束

众所周知,在强类型语言中,类型约束是语法上的要求,即:定义一个变量的时候,必须指定其类型,并且以后该变量也只能储存该类型的数据。而PHP是弱类型语言,其特点就是无需为变量指定类型,而且在其后也可以储存任何类型,当然这也是PHP能快速开发的关键之一。但是在php的高版本(PHP5器)语法中,在某些指定场合,针对某些特定类型,也是可以进行语法约束的。PHP5可以使用类型约束。函数的参数可以指定

2017-01-17 15:37:17 1270

原创 php中对象克隆和一个简单的单列类

在多数情况下,我们并不需要完全复制一个对象来获得其中的属性。但有一个情况下确实需要:如果你有一个GTK窗口对象,该对象持有窗口的相关资源。你可能会想复制一个新的窗口,保持所有属性与原来的窗口相同,但必须是一个新的对象(因为如果不是一个新的对象,那么一个窗口中的改变就会影响到另一个窗口)。还有一种情况:如果对象A中保持着对象B的引用,当你复制对象A时,你想其中使用的对象不再是对象B而是B的一

2017-01-17 13:10:12 917

原创 运用反射机制捕获类的原型

假如有个person类,代码如下:class Person{ public $name = 'lightWay'; public $gender; public function say() { echo $this->name,"\tis",$this->gender,"\r\n"; } public function __

2017-01-16 17:03:17 364

原创 自己写了一个简单的mysql数据库连接类

直接上代码吧,有时间在维护下class DB { private $host; //主机 private $username; //用户名 private $password; //密码 private $dbName; //数据库名称 private $port; //数据库端口 private $socket; //套接字 priva

2017-01-13 18:58:15 2480

原创 linux crond 定时任务

最近要做一个订单自动过期的功能,服务器是centos6,有两个选择,一个是系统的crond一个是mysql 的 event(时间触发器),不过由于业务的复杂程度,所以选择了crond,有些同学可能搞不明白crond和crondtab有啥关联,区别如下crond的概念和crontab是不可分割的。crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命

2017-01-13 11:12:55 554

原创 php删除文件夹

最近要做一个清空缓存的功能,就琢磨了下写了一个简单的删除文件夹的方法,由于并没有太多对文件的操作,也就没封装成类,有需要的可以拿去,或者完善下,代码如下:/** * @param $dir string 文件夹名称 * @param bool $status bool 是否删除文件夹 */ function delDirFile($dir,$statu

2017-01-11 18:36:38 407

原创 php面向对象之重载(overloading)

在java中,重载就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法,这也牵涉到了多态。在PHP中呢,有人说php没有多态,那重载呢?PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法,分为属性的重载和方法的重载;我们是通过魔术方法(magic methods)来实现的,当调用当前环境下未

2017-01-10 14:23:00 3870 3

原创 php中的反射机制

PHP 5 具有完整的反射 API,添加了对类、接口、函数、方法和扩展进行反向工程的能力。 此外,反射 API 提供了方法来取出函数、类和方法中的文档注释。请注意部分内部 API 丢失了反射扩展工作所需的代码。 例如,一个内置的 PHP 类可能丢失了反射属性的数据。这些少数的情况被认为是错误,不过, 正因为如此,它们应该被发现和修复。举个栗子吧,我有个Person类/** * C

2017-01-09 11:22:33 428

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除