当前位置:  论坛 iis7站长之家
本页文章导读:
    ▪PHP 面向对象 PHP5 中的常量       在PHP5中 const定义的常量与定义变量的方法不同,不需要加 $ 修饰符。const PI = 3.14; 这样就可以。 而使用const 定义的常量名称一般都大写,这是一个约定,在任何语言中都是这样。 如果定义.........
    ▪在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)       首先说明一下我的一些参数:操作系统: Windows 7 UltimateWeb Server:Apache 2.2.14Visual Studio: 6.0 (别嫌弃它版本老,即便是在Win7下它还是能用的,当然你用Visual Studio 2008也行) 什么是eAccelerator?eaccele.........
    ▪一些被忽视的PHP函数(简单整理)       sys_getloadavg() 这个函数返回当前系统的负载均值信息(当然 Windows 下不适用),详细文档可以翻阅 PHP 的相关文档。文档中有段示例代码,基本上也就能看出它的用途了。 代码如下: <?php $l.........

[1]PHP 面向对象 PHP5 中的常量
    来源: 互联网  发布时间: 2013-11-30
在PHP5中 const定义的常量与定义变量的方法不同,不需要加 $ 修饰符。const PI = 3.14; 这样就可以。
而使用const 定义的常量名称一般都大写,这是一个约定,在任何语言中都是这样。
如果定义的常量由多个单词组成,使用 _ 连接,这也是约定。
比如, MAX_MUMBER 这样的命名方式。一个良好的命名方式,是程序员必须注意的。
类中的常量使用起来类似静态变量,不同点只是它的值不能被改变。我们使用 类名::常量名 来调用这个常量。

代码如下:

<?
//声明一个final类Math
class Math{
      const  PI = 3.14;     
      public function __toString(){
          return "这是Math类。";
      }
      //这里写了一个算圆面积的方法.使用了Const常量,
      //注意使用的方法,类似与静态变量.
      public final function areaOfCircular($r){
          return $r * $r * self::PI ;
      } 
      public final function max($a,$b){
          return $a > $b ? $a : $b ;
      }  
}
echo Math::PI ;
?>

程序运行结果:
代码如下:
3.14

尝试为const定义的常量赋值,将会出现错误。
代码如下:

<?
//声明一个final类Math
class Math{
      const  PI = 3.14;     
      public function __toString(){
          return "这是Math类。";
      }
      //这里写了一个算圆面积的方法.使用了Const常量,
      //注意使用的方法,类似与静态变量.
      public final function areaOfCircular($r){
          return $r * $r * self::PI ;
      } 
      public final function max($a,$b){
          return $a > $b ? $a : $b ;
      }
      public function setPI($a){
          self::PI  = 3.1415;
      }
}
echo Math::PI ;
?>

程序运行结果:
代码如下:
Parse error: parse error in E:\PHPProjects\test.php on line 17

    
[2]在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
    来源: 互联网  发布时间: 2013-11-30

首先说明一下我的一些参数:
操作系统: Windows 7 Ultimate
Web Server:Apache 2.2.14
Visual Studio: 6.0 (别嫌弃它版本老,即便是在Win7下它还是能用的,当然你用Visual Studio 2008也行)

什么是eAccelerator?
eaccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了性能php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。

1.首先下载编译好的PHP二进制包。(稍后会用到) 地址如下:
http://cn.php.net/distributions/php-5.2.12-Win32.zip

http://cn.php.net/distributions/php-5.2.13-Win32.zip

2.再下载PHP的源代码,稍后编译eAccelerator的时候会用到。地址如下:
http://cn2.php.net/get/php-5.2.12.tar.bz2/from/a/mirror

http://cn2.php.net/get/php-5.2.13.tar.bz2/from/a/mirror

3.升级PHP:
这一过程很简单,首先关闭Apache,然后将压缩包里解压出来的所有文件替换掉原来的文件即可。例如你原来的PHP程序文件位于 D:\php,那么请将php-5.2.13-Win32.zip(或者php-5.2.12-Win32.zip)解压到这一路径下覆盖原有文件。

4.启动Apache,我们会收到一条报错信息,Apache无法启动。打开Apache的日志文件(此文件路径为apache\logs\error.log),我们会看到这样的提示信息:

代码如下:

PHP Warning: [eAccelerator] This build of "eAccelerator" was compiled for PHP version 5.2.11.
Rebuild it for your PHP version (5.2.13) or download precompiled binaries.

意思就是当前的eAccelerator是为PHP 5.2.11编译的,不适用于5.2.13。我们应该重新编译一份eAccelerator。

5.下载一份eAccelerator的源码。地址如下:
http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.zip

6.将第2步骤下载到的PHP源码解压到某一目录下,例如 E:\php。然后打开你的PHP程序目录(也就是你的php.exe所在的目录),找到其中dev子目录下的php5ts.lib文件,把它复制到E:\php这一位置。

7.打开E:\php\ext,在这下面创建一个目录命名为eaccelerator,然后将第5步骤下载到的压缩包解压到此目录下。此时的目录结构应该是这样的:

8.打开win32子目录,其中应该有一个名叫eAccelerator.dsw的项目文件,用VS开发环境打开它(比如我用的就是VS6.0),打开”组件”>”配置”,选中 Win32 Release PHP5 这一选项,单击“关闭”。


9.按下F7键(或选择工具条中的编辑按钮)开始编译,稍等片刻,编译成功,你就可以在win32目录下看到生成了一个Release子目录,打开这个子目录,你就会看到已经生成了eAccelerator.dll文件。
将这个文件复制到你的PHP扩展目录下(如D:\php\ext),替换掉原有的文件,然后启动Apache,你就会发现eAccelerator已经成功加载了。

或者

猛击此处下载编译好的dll文件

文章来自:.yinzhili


    
[3]一些被忽视的PHP函数(简单整理)
    来源: 互联网  发布时间: 2013-11-30
sys_getloadavg()
这个函数返回当前系统的负载均值信息(当然 Windows 下不适用),详细文档可以翻阅 PHP 的相关文档。文档中有段示例代码,基本上也就能看出它的用途了。
代码如下:

<?php
$load = sys_getloadavg();
if ($load[0] > 80) {
header('HTTP/1.1 503 Too busy, try again later');
die('Server too busy. Please try again later.');
}

PS,如果“很不幸”得你的 PHP 环境中没有这个函数,可以考虑使用下面这段代码 via
代码如下:

if (!function_exists('sys_getloadavg')) {
function sys_getloadavg()
{
$loadavg_file = '/proc/loadavg';
if (file_exists($loadavg_file)) {
return explode(chr(32),file_get_contents($loadavg_file));
}
return array(0,0,0);
}
}

这一特性如果使用得当,能减轻服务器部分压力。

pack()
pack 对应的还有个函数为 unpack,用于压缩二进制串,文中的作者的示例非常清楚

$pass_hash = pack("H*", md5("my-password"));如果你使用 PHP5,那么可以直接这样子

$pass_hash = md5("my-password", true); // PHP 5+这样做的好处之一是能减少串存储空间(能节省多少呢?可能又会是另篇文章了)。

这里还有个示例代码可以 pack 数组 via
代码如下:

<?php
function pack_array($v,$a) {
return call_user_func_array(pack,array_merge(array($v),(array)$a));
}

cal_days_in_month()

该函数可以直接返回指定月份中的天数,例如

$days = cal_days_in_month(CAL_GREGORIAN, date("m"), date("Y")); // 31我敢保证,你自己实现过类似功能的函数 :^)

_()
呃,这的确也是个 PHP 函数(也有可能是最短的 PHP 内置函数)。_() 是它的“小名”,它的大名是 gettext()。

写过 Wordpress 皮肤的朋友会了解 __() 以及 _e() 这些函数,其实 PHP 早已经自带了相关的功能。
代码如下:

// Set language to German
setlocale(LC_ALL, 'de_DE');

// Specify location of translation tables
bindtextdomain("myPHPApp", "./locale");

// Choose domain
textdomain("myPHPApp");

echo _("Have a nice day");

利用 gettext 可以编写多语言的应用,现在您感兴趣的可能就是如何编写 locale 文件,这但已经不是此文涉及的重点,更多信息可以移步到这里。

get_browser()
坦白讲,见到这个函数我当时就彻底泪奔。有了这个函数,再也不用自己去分析 $_SERVER['HTTP_USER_AGENT'] 这个字符串了。

更多的信息可以参考这里。在使用此函数前,你可能需要个 browscap.ini 配置文件,相信你可以搞定的。

debug_print_backtrace()
以前查看函数调用堆栈,我会使用 xdebug 等的扩展,其实 PHP5 版本以后已经内置了相关的函数。

顺便再分享个“蛋疼”的小技巧,如果你记不住这个函数的名字,可以用这段代码同样能达到目的(看起来还是记住那个函数靠谱):
代码如下:

<?php
$e = new Exception();
print_r(str_replace('/path/to/code/', '', $e->getTraceAsString()));natsort()
这个函数用于自然排序,这个大家可能都要用到。贴下相关的文档链接以及示例代码

$items = array("100 apples", "5 apples", "110 apples", "55 apples");

// normal sorting:
sort($items);
print_r($items);
# Outputs:
# Array
# (
# [0] => 100 apples
# [1] => 110 apples
# [2] => 5 apples
# [3] => 55 apples
# )

natsort($items);
print_r($items);
# Outputs:
# Array
# (
# [2] => 5 apples
# [3] => 55 apples
# [0] => 100 apples
# [1] => 110 apples
# )有关自然排序的算法规则,可以参考这里的文档。

glob()
这个函数的功能同样让人感到泪奔,先不说功能直接上示例代码
代码如下:

foreach (glob("*.php") as $file) {
echo "$file\n";
}

相比你已经了解该函数的用途了,那么我们就可以有更多的“玩法”,例如就显示目录(via):

$dirs = array_filter(glob($path.'*'), 'is_dir');当然,文件递归你也可以考虑使用下 SPL 扩展。

补充 by 神仙:

glob 有个参数选项 GLOB_ONLYDIR 就可以只列目录PHP Filter
如果你还在正则验证字符串,那么就真的“Out”了。自 PHP5.2 版本以后,内置了 PHP Fliter 模块用于专门验证 电子邮件、URL 等是否合法,示例代码:

var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));由于是新生的模块,因此还有很多的陷阱,例如

filter_var('abc', FILTER_VALIDATE_BOOLEAN); // bool(false)
filter_var('0', FILTER_VALIDATE_BOOLEAN); // bool(false)但这不影响我们去尝试。有关 PHP Filter 的更多信息,相信能拎出来另外写篇文章了。

-- Split --

最后,感叹 PHP 其实是个历久弥新的工具,不小心我们就会悲剧性得重复造了只轮子。因此,时常看看 PHP 文档每次都会有新的收获。

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3