PHP
文章平均质量分 67
键盘钢琴师
这个作者很懒,什么都没留下…
展开
-
mac环境下安装composer
mac环境下安装composermac环境下安装composer什么是composer安装方式说明安装步骤完什么是composer Composer是PHP中用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer会帮你安装这些依赖的库文件。 —— 百度百科安装方式...原创 2018-03-15 18:31:44 · 506 阅读 · 0 评论 -
深入浅出理解依赖注入
容器,字面上理解就是装东西的东西。常见的变量、对象属性等都可以算是容器。一个容器能够装什么,全部取决于你对该容器的定义。当然,有这样一种容器,它存放的不是文本、数值,而是对象、对象的描述(类、接口)或者是提供对象的回调,通过这种容器,我们得以实现许多高级的功能,其中最常提到的,就是 “解耦” 、“依赖注入(DI)”。本文就从这里开始。IoC 容器 —— Laravel 的核心Lar转载 2017-02-23 17:27:05 · 11662 阅读 · 2 评论 -
接口的作用
接口定义一套规范,描述一个“物”的功能,要求如果现实中的“物”想要成为可用,就必须实现这些基本功能。接口这样描述自己:“对于实现我的所有类,看起来都应该像我现在这个样子”。采用一个特定接口的所有代码都知道对于那个接口会调用什么方法。这便是接口的全部含义。接口常用来作为类与类之间的一个“协议”。接口是抽象类的变体,接口中所有方法都是抽象的,没有一个有程序体。接口除了可以包含方法外,还能包含常原创 2017-02-25 15:31:41 · 2400 阅读 · 0 评论 -
__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 · 863 阅读 · 0 评论 -
对象与类
在前面代码(两篇博客)中定义了一个类,并创建了这个类的对象,把前面产生的对象作为这个新对象的一个熟悉,完整代码如下:class Person{ public $name; public $gender; public function say() { echo $this->name,"\tis\t",$this->gender,"\r\n"原创 2017-01-26 15:38:43 · 475 阅读 · 0 评论 -
对象与数组
对象是什么,我们不好解释,也不容易回答,但是我们知道数组是什么。数组的概念比较简单。可以拿数组和对象对比来帮助我们理解对象。对象转化为数组,数组也能转化为对象。数组是由键值对数据组成的,数组的键值对和对象的属性/属性值对十分相似。对象序列化后和数组序列化后的结果是惊人的相似。如下面的代码所示:$student_arr = ['name'=>'tom','gender'=>'male'];ec原创 2017-01-23 11:48:03 · 613 阅读 · 0 评论 -
对象的“本”
我们需要跟深入地了解这种机制,看对象的“本”。对象是什么?对象在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 · 361 阅读 · 0 评论 -
对象的“形”
要回答类与对象本质这个问题,我想可以先从“形”的角度来回答。本节以PHP为例,来探讨对象的“形”与“本”的问题。类是我们对一组对象的描述在PHP里,每个类的定义都是以关键字clss开头,后面跟着类名,紧接着一对花括号,里面包含有类成员和方法的定义。如下面代码所示:class Person { public $name; public $gender; pub原创 2017-01-23 11:47:18 · 425 阅读 · 0 评论 -
php魔术方法__invoke
PHP5.3新增了一个叫做__invoke的魔术方法,这样在创建实例后,可以直接调用对象。就是用函数的方式来用对象,比如我现在有个A类,如果我想防止别人直接输出对象,那么我可以这样:class A { public function __invoke() { return '不允许这样使用'; }}$a = new A();echo $a原创 2017-01-20 18:49:17 · 1391 阅读 · 0 评论 -
类的组合与继承
在“对象与类”那篇博客中,我们定义了两个类,一个是person,一个是family;在family类中创建person类中的对象,把这个对象视为family类的一个属性,并调用它的方法处理问题,这种复用方法叫“组合”。还有一种复用方式,就是继承。类与类之间有一种父与子的关系,子类继承父类的属性和方法,称为继承。在继承里,子类拥有父类的方法和属性,同事子类也可以有自己的方法和属性。我们把那一原创 2017-02-09 18:19:56 · 1360 阅读 · 0 评论 -
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 · 16434 阅读 · 0 评论 -
各种语言中的多态
多态确切的含义是:同一类的对象收到相同的消息时,会得到不同的结果。而这个消息是不可预测的。多态,顾名思义,就是多种形态,也就是多种结果。原创 2017-02-21 20:58:04 · 1118 阅读 · 0 评论 -
面向对象的“形”与“本”
类是对象的抽象组织,对象是类的具体存在。2200年前的战国时期,赵国平原君的食客公孙龙在骑着白马进城时,被守城官以马不能入城拦下,公孙龙即兴演讲,口述“白马非马”一论,守城官无法反驳,于是公孙龙就骑着他的白马(不是马的)进城去了。这就是历史上最经典的一次对面向对象思维的阐述。公孙龙的“白马非马”论如下:“白马非马”,可乎?曰:“可。”曰“何儎?”曰:“马者,所以命形也;白者,所原创 2017-01-23 11:46:09 · 368 阅读 · 0 评论 -
魔术方法的应用
魔术方法是以两个下划线“__”开头、具有特殊作用的一些方法,可以看做是PHP的“语法糖”。语法糖指那些没有给计算机语言添加新功能,而只是对人类来说更“甜蜜”的语法。语法糖往往给程序员提供了更多实用的编码方式或者一些技巧性的用法,有益于更好的编码风格,使代码更易读。不过其并没有给语言添加什么新东西。PHP里的引用、SPL等都属于语法糖实际上,上一篇博客中就涉及魔术方法的使用。fa原创 2017-01-27 14:56:05 · 639 阅读 · 0 评论 -
mac在MAMP环境如何配置ioncube
前言mac下PHP环境有哪些MAMP命令行前言前两天,搞一个项目的二次开发的时候,发现部署完了之后,运行不了,然后查了下,发现是源码用了ioncube加密,按照官方给的方式,安装了,php.ini 文件也配置了,就是提示找不到,最后发现原来是 mamp 捣的鬼,写给有需要的人。mac下PHP环境有哪些图像界面软件 类似 xampp 、mamp这些...原创 2017-12-26 22:07:12 · 1311 阅读 · 0 评论 -
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 · 19812 阅读 · 0 评论 -
laravel Task Scheduling(任务调度)在windows下的使用
前言问题解决方案通过计划任务和批处理通过vb脚本实现自动任务的静默执行总结前言 laravel的任务调度是很好用的,因为Laravel提供了平滑而又富有表现力地调度器,并且服务器上只需要一个Cron条目即可,这使我们从编写手动写crontab中解放出来,使得程序重新获得定时任务的控制权。 但是,我们发现laravel的文档中只提供了linux/unix下的解决方案,但是我们大多数时候本原创 2017-09-12 11:49:39 · 6482 阅读 · 0 评论 -
centos7 上面laravel不能访的一个小问题和PDO扩展的安装
今天终于把laravel放到服务器上面去了,但是不知道为什么用ip地址一直访问不了,浏览器报500错误,然后就去浏览器找访问日志查看:可以看出来,项目已经被访问到了,为什么是500呢?在入口文件段一下试试看,于是在/public/index.php里面exit('1')了下,发现浏览器也有输出,这就代表确实是laravel里面除了问题。然后去看了下错误日志,发现提示PDO的问题:原创 2017-08-07 16:36:16 · 1318 阅读 · 0 评论 -
对PHP接口的思考
PHP的接口自始至终一直在被争议,有人说接口很好,有人说接口像鸡肋。首先要明白,好喝不好的判断标准是什么。无疑,这是和Java/C++相比。在上面的例子中,以及讨论了PHP的接口在“面向契约编程”中是不足的,并没有起到应有的作用。其实,在上一章的interface.php代码中,machine类的声明应该在plain类前面。接口提供了一套规范,这是系统提供的,然后machine类提供一组针对接原创 2017-03-02 22:13:56 · 3036 阅读 · 0 评论 -
反射有什么作用
预留原创 2017-03-08 23:37:02 · 541 阅读 · 0 评论 -
如何使用反射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 · 782 阅读 · 0 评论 -
反射
面向对象编程中对象被赋予了自省的能力,而这个自省的过程就是反射。反射,直观理解就是更具到达地找到出发地和来源。比方说,我给你一个光秃秃的对象,我可以仅仅通过这个对象就能知道它所属的类,拥有哪些方法。反射指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取信息以及动态调用对象方法的功能称为反射API。原创 2017-03-06 23:18:24 · 384 阅读 · 0 评论 -
面向接口编程
这里,首先强调一个概念,面向接口编程并不是一种新的编程范式。原创 2017-02-25 11:52:48 · 318 阅读 · 0 评论 -
继承和多态
面向对象的优势在于类的复用。继承与多态都是对类进行复用,他们一个是类级别的复用,一个是方法级别的复用。提到继承必须提到组合,两者有何异同?PHP到底有没有多态呢?类的组合与继承各种语言中的多态原创 2017-02-25 11:45:42 · 430 阅读 · 0 评论 -
__toString方法
再看另外一个魔术方法__TOstring(在这里故意这么写,是要说明PHP中方法不区分大小写,但实际开发中还需要注意规范)。当进行测试时,需要知道是否得出正确的数据。比如打印一个对象时,看看这个对象都有哪些属性,其值是什么,如果类定义了__toString方法,就能在测试时,echo打印对象体,对象就会自动条用它所属类定义的__toString方法,格式化输出这个对象所包含的数据。如果没有这个原创 2017-02-07 15:45:50 · 1063 阅读 · 0 评论 -
自己写了一个简单的mysql数据库连接类
直接上代码吧,有时间在维护下class DB { private $host; //主机 private $username; //用户名 private $password; //密码 private $dbName; //数据库名称 private $port; //数据库端口 private $socket; //套接字 priva原创 2017-01-13 18:58:15 · 2522 阅读 · 0 评论 -
面向对象中的序列化和反序列化
序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。在PHP中,可以通过serialize()方法序列化,serialize()返回字符串,此字符串包含了表示value的字节流,可以存储于任何地方。这有利于存储或传递PHP的值,同时不原创 2017-01-18 17:36:21 · 949 阅读 · 0 评论 -
php面向对象之访问权限修饰符
PHP中有三种访问修饰符,分别是: public(公共的、默认) protected(受保护的) private(私有的)public(公共的、默认)在PHP5中如果类没有指定成员的访问修饰符,默认就是public的访问权限。protected(受保护的)被声明为protected的成员,只允许该类的子类进行访问。private(私有的 ) 被定义为原创 2016-12-07 18:21:44 · 4867 阅读 · 0 评论 -
php面向对象之继承
继承:一个类从另一个已有的类获得其特性,称为继承。派生:从一个已有的类产生一个新的类,称为派生。父类/子类:已有类为父类(基类),新建类为子类(派生类)。单继承:一个类只能从一个上级类继承其特征信息,PHP和其他大多数面向对象语言一样,都是单继承。C++是多继承。扩展:在子类中再来定义自己的一些新的特有的特性信息(属性、方法和常量)。没有扩展继承就毫无意义。上面都是我总原创 2016-12-06 18:40:37 · 555 阅读 · 0 评论 -
PHP面向对象中的析构方法
PHP 析构方法 __destruct() 允许在销毁一个类之前执行执行析构方法。析构方法与构造方法对应的就是析构方法,析构方法允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件、释放结果集等。析构函数不能带有任何参数,其名称必须是 __destruct() 。语法:function __destruct(){ ......}原创 2016-12-02 17:38:17 · 990 阅读 · 0 评论 -
php面向对象中的构造方法
PHP 构造方法 __construct() 允许在实例化一个类之前先执行构造方法。构造方法构造方法是类中的一个特殊方法。当使用 new 操作符创建一个类的实例时,构造方法将会自动调用,其名称必须是 __construct() 。在一个类中只能声明一个构造方法,而是只有在每次创建对象的时候都会去调用一次构造方法,不能主动的调用这个方法,所以通常用它执行一些有用的初始化任原创 2016-12-01 16:09:30 · 877 阅读 · 0 评论 -
php值和对象的值传递和引用传递
在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针:例如你不能对他们做指针运算,他们并不是实际的内存地址…… 查看引用不是什么了解更多信息。 替代的是,引用是符号表别名。注意在PHP 中,变量名和变量内容是不一样的, 因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身——变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系原创 2016-11-28 17:53:44 · 2637 阅读 · 0 评论 -
关于php命名空
什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.tx原创 2016-08-23 10:19:15 · 705 阅读 · 0 评论 -
php的类型转换
昨天面试一个phper,面试题里面有道蛮简单的题目他做错了,很多phper在工作许久之后还不是很了解php的类型转换,写篇博客记录下。先看面试题a.30 b.24linux c.6 d.30linux答案毋庸置疑,选a,30 为什么呢?这里就要谈谈php的类型转换PHP 在变量定义中不需要(或不支持)明示的类型定义;变量类型是根据使用该变量的上下文所决定的。也就是说,如原创 2016-06-24 09:24:16 · 502 阅读 · 0 评论 -
php函数和语法结构
我们先来看看语言结构和函数的区别1、 什么是语言结构和函数 语言结构:就是PHP语言的关键词,语言语法的一部分;它不可以被用户定义或者添加到语言扩展或者库中;它可以有也可以没有变量和返回值。 函数: 由代码块组成的,可以复用。 2、 语言结构为什么比函数快 原因是在PHP中,函数都要先被PHP解析器分解成语言结构,所以有此可见,函数比语言结构多了一原创 2016-02-23 17:17:56 · 1222 阅读 · 0 评论 -
PHP中empty()和isset()的区别
虽然记得,"empty()" 是检测变量是否为空,"isset()"是检测变量是否设置,但是有时候还是容易凌乱,看千遍不如自己写一遍。手册中是这样定义的"empty" 判断一个变量是否被认为是空的,当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在。如果变量不存在的话,"empty"并不会产生警告。“isset" 检测变量是否设置,并且不是NULL。如果已经使用了原创 2016-02-20 09:37:36 · 688 阅读 · 0 评论 -
PHP的异常处理机制
昨天晚上,看了下顺平老师的视频,原来一直没用到过php的异常处理,今天写一篇,记录下先来了解下异常处理 异常处理(又称为错误处理)功能提供了处理程序运行时出现的错误或异常情况的方法。 异常处理通常是防止未知错误产生所采取的处理措施。异常处理的好处是你不用再绞尽脑汁去考虑各种错误,这为处理某一类错误提供了一个很有效的方法,使编程效率大大提高。当异常被触发时,通常会发生:原创 2016-02-17 19:23:39 · 740 阅读 · 0 评论 -
同一个类的不同的实例相互访问私有或者受保护的成员
class C1 { private $v; public function __construct($value) { $this->v = $value; } /** * 打印私有成员$v */ private function printValue() { echo $this->原创 2016-12-08 10:47:18 · 2100 阅读 · 0 评论 -
虚拟主机中让apache显示目录列表的配置方法
在http.conf中加入如下代码(如有虚拟主机配置,加在虚拟主机配置段内,如:vhosts.conf),并把主目录内的index.pho,index.html,index.htm文件删除比如,下面是我的虚拟主机配置 DocumentRoot "E:\WWW\test" ServerName test.test.com ServerAlias phpStudy.ne原创 2016-12-09 17:02:47 · 3034 阅读 · 2 评论 -
php面向对象之重写(override)
在PHP中,如果从父类继承的成员不能满足子类的需求,可以对其进行改写,这个过程称为覆盖(override),也称重写。 分为属性的重写和方法的重写。因为PHP是弱类型的语言, 所以在方法的参数中本身就可以接收不同类型的数据,又因为PHP的方法可以接收不定个数的参数,所以通过传递不同个数的参数调用不相同方法名的不同方法也是不成立的(这点和java不同)。注意,在编程语言中,php的重载要原创 2016-12-08 14:35:02 · 2484 阅读 · 0 评论