11
2015-03

PHP中引用和引用传递以及赋值的解释

 1. PHP中引用的特性
首 先,PHP中的引用不是C的指针,可以把它想象成UNIX文件系统中对文件的链接,是变量的另外一个别名或者映射。
例如:$b = &$a中,$b和$a都只是一个变量名称,此操作使$b和$a都映射到同一个变量内容;$a 和 $b 在这里是完全相同的,这并不是 $a 指向了 $b 或者相反,而是 $a 和 $b 指向了同一个地方。
$b = &$c则是让$b重新映射到另外一个变量内容,与$a再无关系;
unset($a)只是断开了$a到变量内容的映射,但变量内容并没有被释放,依然可以使用$b来访问,一旦$b也unset了,那么该变量内容在没有任何映射的情况下会被释放。

22
2014-08

php下单元化测试phpunit的安装于使用

1、下载: http://pear.php.net/go-pear.phar
2、命令行下,在php目录下运行php go-pear.phar
3、更改php.ini中include_path的路径:

10
2014-07

PHP 观察者模式 PHP SplSubject SplObserver 接口实现

       最近在看一些PHP观察者模式的东西,因为要做的一个项目需要用到观察者模式,那么什么是观察者模式呢,如何使用观察者模式呢?

       其实观察者模式这是一种较为容易去理解的一种模式吧,它是一种事件系统,意味着这一模式允许某个类观察另一个类的状态,当被观察的类状态发生改变的时候,观察类可以收到通知并且做出相应的动作。比如键盘,我一敲击,系统就收到通知并进行相应的回应。对于PHP来说,PHP内置提供了两个接口来供外部应用区实现这个模式。SplSubject 接口,它代表着被观察的对象,其结构如下:

10
2014-07

php匿名函数及JS相关

PHP自5.3版本之后开始支持匿名函数,今天听到别人说了,就上网查了一下,然后写了一个小例子,代码如下:

<?php
//匿名函数
$fun=create_function('','echo 123;');
echo $fun;//lambda_1,没刷新一次,可以让后面的数字自增
echo '<br/>';
$fun();// 123
?>
27
2014-05

如何安装composer依赖关系,教你一步搞定

首先保证你的php版本是5.3以上的,然后需要去https://getcomposer.org/Composer-Setup.exe下载最新的composer安装文件,然后,你需要安装一下,记得根据提示,保证找到你的php.exe文件。

27
2014-05

如何开启YII框架访问index-test.php时候的错误信息提示?

在使用YII框架做开发的时候,可能遇到错误你找了半天都不知道错误出在哪里,如果开启了错误信息提示,那么很明显的就能知道错在什么位置了。但是我们最好把错误信息放在index-test.php下访问的时候提示,而不是放在访问index.php的时候提示,我们要如何处理呢?
首先我们要现在index-test.php中打开错误信息提示,需要加入以下两行代码
ini_set('display_errors', 'On');
error_reporting(E_ALL & ~E_NOTICE);
然后找到config下的main.php中的以下代码

27
2014-05

Yii框架中的rules中的验证规则场景,'on'=>'search'表示什么?

       现在接触YII框架也就只有近3个月的时间吧,对于里面的所有的类及方法组件等还不是很熟悉,在开发中一直有一个疑问,就是在控制器中实例化类的时候,有时候需要在实例化的类的括号中加一个search,有的时候却不需要添加,例如:$model=new Demo('search');
       最后请教了一下高手,自己也查询了一下YII框架类参考手册,终于明白了,在实例化类的时候添加不添加search,取决于你这里是否需要用到search,如果是表单验证,不能添加search,如果是搜索,就可以添加search,还有要明白,这个search是哪里来的,可不是类中的search方法,而是类中rules方法中的'on'=>'search',具体的代码例子如:array('userid', 'safe', 'on'=>'search'),意思是在搜索场景中认为userid是安全的,可以搜索,另外还有其他场景,具体如下:

26
2014-05

mysql5.5提示Deprecated: mysql_query(): The mysql extension is deprecated

今天升级了mysql数据库为5.5版本了,结果使用以前的mysql_connect来连接数据库发现提示Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in 了,这个看意思是以后不用mysql_connect函数了,下面我们一起来看问题解决方法
     从错误提示看是不推荐使用mysql_connect函数,然后我再从官方看到是说以后不用mysql_connect函数,推荐使用mysqli或者PDO来替代了,知道原因解决起来就方便了。
     解决方法1:在php程序代码里面设置报警级别
error_reporting = E_ALL & ~E_DEPRECATED

26
2014-05

PHP mysql函数及其Mysqli函数代替用法

由于MySQL扩展从php 5.5开始弃用,所以以后不推荐大家再用MySQL扩展,请用MySQLi或PDO代替,以下是MySQL对应的MySQLi函数(绿色字体)供大家参考。(注:PHP手册上的有误,这里是最准的)
MySQL>>(从PHP 5.5开始弃用)
mysql_affected_rows — (mysqli_affected_rows())取得前一次 MySQL 操作所影响的记录行数
mysql_client_encoding — (mysqli_character_set_name())返回字符集的名称(返回当前连接的默认字符集名称。)
mysql_close — (mysqli_close())关闭 MySQL 连接
mysql_connect — (mysqli_connect())打开一个到 MySQL 服务器的连接

23
2014-05

PHP命令传递参数,Yii下命令$args来源

       在使用YII框架的时候,在架构该框架之后会在protected文件夹下生成一个yiic命令工具,在这里你可以使用YII自带的命令,首先你需要现在commands下新建一个command命令php文件,文件名格式如DemoCommand.php
代码如下:

18
2014-04

Yii框架中memcache如何使用

        在现在的公司用的是YII的框架,接触到的东西也比较多,可以学到的东西也比较多,在以前的公司没有接触过memcache,只是听过,但是从来没有真正用过。现在终于有机会使用一下了,就以我做的项目为例吧!
        我做的项目是一个手机排行榜,但是排行榜每隔15分钟刷新一次啊,排行榜有一个前三名,可能前15分钟这三个人是前三名,也许下一个15分钟又是别人前三名了,产品要求,这些人中只要是前三名的都要发奖品,思考了好久,最终决定用memcache来保存每15分钟的榜单前三名的信息。代码如下:

10
2014-04

Apache配置正向代理与反向代理【转摘】

1. 正向代理
配置正向代理很简单,此处我们配置vhost来实现代理, 只需要在浏览器的Proxy选项里加入你的Apache配置的vHost主机即可
1.1 开启Apache代理模块并引入vhost配置文件
早http.conf开启代理模块

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so

10
2014-04

apache做反向代理服务器【转摘】

apache代理分为正向代理和反向代理:
1 正向代理: 客户端无法直接访问外部的web,需要在客户端所在的网络内架设一台代理服务器,客户端通过代理服务器访问外部的web(需要在客户端的浏览器中设置代理服务器)
适用于:

①局域网的代理服务器(一般是网关,相当于squid的一般用法)
②访问某个受限网络的代理服务器,如教育网访问某些国外网站需要找代理

28
2014-03

PHP如何把十六进制的编码转义为汉字并取出其中的某一字段

       今天在做公司的项目的时候,遇到一个问题,群聊天记录存入数据库的时候把聊天记录及央视使用16进制转换,我在做将聊天记录导出为text文本的时候,需要将聊天记录先从16进制转换为普通的Unicode编码记录,然后在从中取出所需要导出的message信息,不多说了,代码如下,以下代码属于线下的,线上的就不透漏了:

<?php
/*将16进制编码转换为汉字*/
function hexDecode($s) {
    return preg_replace('/(\w{2})/e',"chr(hexdec('\\1'))",$s);
}