20
2015
03

PHP中的魔术方法和魔术常量简介和使用

魔术方法(Magic methods)
PHP中把以两个下划线__开头的方法称为魔术方法,这些方法在PHP中充当了举足轻重的作用。 魔术方法包括:
__construct(),类的构造函数
__destruct(),类的析构函数
__call(),在对象中调用一个不可访问方法时调用
__callStatic(),用静态方式中调用一个不可访问方法时调用
__get(),获得一个类的成员变量时调用
__set(),设置一个类的成员变量时调用
__isset(),当对不可访问属性调用isset()或empty()时调用
__unset(),当对不可访问属性调用unset()时被调用。
__sleep(),执行serialize()时,先会调用这个函数
__wakeup(),执行unserialize()时,先会调用这个函数
__toString(),类被当成字符串时的回应方法
__invoke(),调用函数的方式调用一个对象时的回应方法
__set_state(),调用var_export()导出类时,此静态方法会被调用。
__clone(),当对象复制完成时调用

20
2015
03

回退Mac上用Brew安装的PHP版本

 昨天随手一点brew upadte & brew upgrade后phpunit出现了各种F,细查下来原来是 php 5.5.17 的一个bug fix 引起的。为了暂时正常使用phpunit,只能回退php的版本。

版本切换方式

通过brew安装的php可以通过brew linkbrew unlink来切换不同版本。

例如

17
2015
03

Mac OSX 10.10 Yosemite安装Mcrypt扩展

mcrypt is a file encryption method using secure techniques to exchange data. It is required for some web apps for example Magento, the shopping cart software or a php framework like Laravel. This tutorial has been tested in OSX 10.10 Yosemite.

This guide is really for users with the version of PHP that shipped with OSX Yosemite which is version 5.5.14. Other downloadable AMP stacks already have mcrypt baked in.

 
11
2014
11

LNMP一键安装包的Nginx 502 Bad Gateway错误可能原因及解决方法

 第一种原因:安装lnmp一键安装包时php没安装成功而出现502 Bad Gateway,从0.9开始只要安装成功或失败都就会有提示。没安装成功一般原因是在安装php前,脚本中某些lib包可能没有安装上,造成php没有编译安装成功。可以看一下是否存在/usr/local/php/sbin/php-fpm ,如果没有肯定没安装成功...

06
2014
11

macbook升级osx10.10 yosemite之后的一系列问题

 今天有时间把MacBook的系统版本升级到10.10了

1.首先,原来装的软件很多打开的时候会提示需要java se6什么的,这里直接把需要的文件地址给出来 JavaForOSX2014-001.dmg
http://supportdownload.apple.com/download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/Mac_OS_X/downloads/031-03190.20140529.Pp3r4/JavaForOSX2014-001.dmg

具体介绍 http://support.apple.com/kb/dl1572

2.vmware 6不能使用了,需要升级到7.但原来vmware6下面的镜像文件还是可以用的

07
2014
03

mac osx 更改自带php版本

 最近把工作转移到mac上面来的时候,发现MacBook osx10.9自带的php是5.4版本的。

原来在windows上面做开发的时候一直实用zendstudio+zenddebugger来调试代码的,但是发现zenddebugger的php版本只到5.3就没有后面的了。

听说是集成到zend server上面了。扯远了,不说那个了。既然php5.4没办法实用zenddebugger了,那能不能把osx自带的php5.4换成php5.3呢?

马上google了下,发现还

11
2014
01

win7 64位 php环境开启curl服务

 window7中PHP环境没开启CURL扩展时,使用CURL_INIT函数会提示 Call to undefined function curl_init()

解决方法:

要启用curl一般打开php.ini,找到“extension=php_curl.dll”,然后去掉前面的“;”注释,重启apache即可。

  如果还出现Call to undefined function curl_init()问题,先检查php.ini的extension_dir值是哪个目录,在那个目录下检查有无php...

18
2013
04

各种语言网站应用程式架构

ASP.NET
 ASP.NET MVC  BFC  DotNetNuke  MonoRail
 Umbraco      
 
ColdFusion
 ColdSpring  Fusebox  Mach-II  Model-Glue
 onTap  on Wheels    
 
Common Lisp
 ABCL-web  blow  BKNR  SymbolicWeb
 UnCommon Web      
 
 
13
2013
03

[转]用C/C++扩展你的PHP

PHP取得成功的一个主要原因之一是她拥有大量的可用扩展。web开发者无论有何种需求,这种需求最有可能在PHP发行包里找到。PHP发行包包括支持各种数据库,图形文件格式,压缩,XML技术扩展在内的许多扩展。

扩展API的引入使PHP3取得了巨大的进展,扩展API机制使PHP开发社区很容易的开发出几十种扩展。现在,两个版本过去了,API仍然和PHP3时的非常相似。扩展主要的思想是:尽可能的从扩展编写者那里隐藏PHP的内部机制和脚本引擎本身,仅仅需要开发者熟悉API。

有两个理由需要自己编写PHP扩展。第一个理由是:PHP需要支持一项她还未支持的技术。这通常包括包裹一些现成的C函数库,以便提供PHP接口。例如,如果一个叫FooBase的数据库已推出市场,你需要建立一个PHP扩展帮助你从PHP里调用FooBase的C函数库。这个工作可能仅由一个人完成,然后被整个PHP社区共享(如果你愿意的话)。第二个不是很普遍的理由是:你需要从性能或功能的原因考虑来编写一些商业逻辑。

21
2012
12

将centos6的curl ssl版本(NSS)替换成openssl,解决Unable to load client key -8178的错误问题

在centos 6.2的系统里面的curl支持的https是nss版本的,而不是openssl的,所以在php使用curl访问https的时候会报Unable to load client key -8178的错误,在google group里面找到了灵感,也是curl和https的,里面说倒是curl的问题:
https://groups.google.com/forum/?fromgroups=#!topic/pongba/sgMYM9dGI7k


根据链接里面说的,去官网下载了一个最新版本(curl-7.28.1.tar.gz)的curl,来进行源码编译...