文章分类

类别: PHP

php的引用操作符&

2010年10月12号
1条评论 372次浏览

说实在话在一年前战地写PHP代码的时候从来没有想过什么系统资源什么的,幸好PHP对于内存等其它的系统资源回收还是相当积极的。但是不管怎么样还是要注意的,毕竟资源是是宝贵的嘛。
那么我们开始今天的话题吧,说说PHP的引用操作符&,熟悉C的都知道C中有一个被称为指针的东西,指针就是指向内存地址的。这个&也是具有同样的功能的。

看如下代码:
$source=”110″;
$a=$source;
$b=&$source;
$source=”120″;
echo $a.”rn”,$b; 阅读全文

类别PHP 标签

php网页乱码之php的错

2010年10月12号
1条评论 336次浏览

好多年没有遇到过PHP网页乱码问题了,真的。但是今天错误重现是我惊诧莫名啊!
有一个很久的工程今天要莫名其妙的重新启动了,这个工程是xampp的环境——不知道xampp?你Google一下吧,这个我不多说了。
一开始轻车熟路,apahce配置,php配置……一路下来没有任何问题。开始访问吧,问题就来了,很奇怪预料之中可以运行的页面,却出了个预料之外的乱码问题。
第一个想到的是,apache的缺省字符集,于是在apache的语言扩展配置文件中加入:
AddDefaultCharset UTF-8 阅读全文

类别PHP 标签

小心get_defined_functions

2010年10月12号
没有评论 263次浏览

小心使用get_defined_functions,这是一个自作主张的函数,是的,很自作主张!
他的作用想必大家都是知道的取得所有已经定义的函数,把函数名称放进一个数组里面。例如:

$functions=get_defined_functions();

这时候$functions['internal']所有元素是PHP自身定义的函数,这次想知道PHP到底定义了多少个函数的兄弟们有福了,呵呵…………我是PHP5.2显示这个数组有1221个元素,想必是PHP自身定义了1221个函数了。这个可能不包括扩展库的函数,例如xml扩展库和gd扩展库!
另外一个元素$functions['user']中则收纳了用户自身定义的所有函数——这个地方要注意啊,我们所说的所有是指当前运行的程序文件和这个程序文件所包含的其他文件中定义的函数。
言归正传,我们为啥要说他自作主张呢?原因是这样的,他不管用户定义的时候写的函数名是不是有大写字母,这些大写字母是不是有特殊含义,他通通的把函数名转换为小写之后才写进数组里面
例如我们定义两个函数:
<?php
function shortHim(){}
function killYouJJ(){}
$functions=get_defined_functions();
var_dump($functions['user']);

结果是这样的

array(2) {
[0]=>
string(8) “shorthim”
[1]=>
string(9) “killyoujj”
}
这就导致像如下的程序始终不成立

in_array(“shortHim”,$functions['user']);

所以使用的时候还是要小心的

类别PHP 标签

PHP魔术函数__autoload的问题

2010年10月12号
没有评论 374次浏览

__autoload这个函数可有意思,这个魔术方法的功效是这样的,当你试图实例化一个当前程序中没有定义的类的时候,他会被触发,然后你可以自动加载指定的类文件名——当然你也可以做其他的,例如为所欲为呵呵……,总之他是在那个时候触发的!更多关于autoload方法的细节你可以查看 魔术方法__autoload()用法和注意事项
然而今天我却发现这个__autoload魔术方法或者你愿意称他为魔术函数,太专一了。当他加载需要包含的类文件时,甚至不管类文件中定义类之外的其它声明。
开始回放这个机制。

首先我们在创建一个Test.class.php文件,键入如下内容
$publicPara=’中共十七大啥时候召开的?’;
class Test{
public function __construct(){
global $publicPara;
if(isset($publicPara)){
echo $publicPara;
}
else{
echo “管我啥事儿了?”;
}
}
}

记得保存这个文件哦!
然后重新建立一个文件命名为do.php键入如下内容
<?php
require_once(‘Test.class.php’);
new Test();

这样的话输出的正如我们期望的那样是:中共十七大啥时候召开的?
但是当你用到__autoload这个魔术方法的时候,问题就出来了
<?php
function __autoload($classname){
require_once($classname.”.class.php”);
}
new Test();

这次的输入居然是:管我啥事儿了?
很显然他忽略了我们在class外定义的变量,也就是他只把我们需要序列化的类加载进来,而不管其他的声明了,也仅仅是其他的声明而已,诸如echo了啥的都还是执行的。

类别PHP 标签

用php_screw为php加密详细过程

2010年06月22号
44条评论 1,162次浏览

1、前言php是一个比较流行的软件,相应的开发产品也很多。如何对自己开发出来的产品保密,保护源代码,也是大家考虑的一个问题。当你的使用主机托管或者虚拟主机的时候,更是一个现实的问题。现在关于加密php程序的,除了zend公司的产品产品,其他的都不尽人意。这里我给大家介绍一个开源的产品,一个很多好的php加密软件–php_screw.

他的好处是用了php的zend引擎,而且是对代码加密,和系统平台没有任何关系,解决了产品放在其他地方的保密问题。 阅读全文

类别PHP 标签

使用php_screw加密php源代码

2010年05月27号
18条评论 894次浏览
在使用PHP过程中发现,自己编写的php代码因为都是源代码方式放在服务器上的所以很容易就被别人拿走随便修改(变成自己开发的)使用了。
为了保住自己的劳动成果,我一直寻找一种可以加密php代码的软件。
最著名的就是Zend公司的Zendencoder了,但是不是开源软件(要价很高,也没有找到破解版)。
既然收费的用不起,我们就用开源的。我找到了php_screw这个开源软件,目前最新版本是1.3 阅读全文
类别PHP 标签

54点提高PHP编程效率 引入缓存机制提升性能

2010年02月19号
没有评论 481次浏览

0、用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的”函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。

1、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。

2、$row['id'] 的速度是$row[id]的7倍。

3、echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。

4、在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。

5、注销那些不用的变量尤其是大数组,以便释放内存。 阅读全文

类别PHP 标签

PHP的RSS生成类

2010年01月11号
8条评论 963次浏览

<?php
/**
 * rss操作类
 */
define(“TIME_ZONE”,”");
define(“FEEDCREATOR_VERSION”, “www.phpzh.com”);
class FeedItem extends HtmlDescribable {
    var $title, $description, $link;
    var $author, $authorEmail, $image, $category, $comments, $guid, $source, $creator;
    var $date;
    var $additionalElements = Array();
} 阅读全文

类别PHP 标签