PHP框架自动加载类的实现

zhang 发表于 PHP 分类,标签:
3

PHP框架 如果包含一般文件较少的情况会用手动包含要使用的类文件
当要包含大量类文件的时候,这样就会显得麻烦,就可以使用自动包含类。

类文件:test.php

class Test
{
    public function __construct()
   {
       echo __CLASS__.__FUNCTION__;
    }
 }

1.手动包含:

    require_once('test.php');
    $test = new Test();

2.使用__autoload()自动包含:

    // 这样实例化一个类的时候,将会自动包含同名的类文件
    // 需要重载__autoload方法,自定义包含类文件的路径
    function __autoload($classname)
    {
        $class_file = strtolower($classname).".php";
        if (file_exists($class_file)){
            require_once($class_file);
       }
    }
    $test = new Test();

阅读全文 »

WordPress高亮代码插件WP-CodeBox

zhang 发表于 PHP, WordPress 分类,标签:
19

WordPress高亮代码显示,前面我们介绍过WP-Syntax插件,这款插件使用起来有些麻烦,而且还需要修改文件的相关配置,对于不太熟悉程序的朋友来说,有点小困难,经过多方寻觅,今找到一款不错的WP-CodeBox代码高亮插件,它支持多种语言、代码下载、复制到剪贴板、代码框收放及后台默认属性设置多项功能,使用起来也比较方便。

WP-CodeBox插件安装:

1.下载WP-CodeBox插件,将压缩包解压后,把文件夹上传到wp-content/plugins/目录下。
2.登录WordPress管理后台,点击“Plugins”找到上传的插件,激活该插件。
3.插件激活后,在“Setting”–>“WP-CodeBox“中设置相关信息
在页面中,其实你也不用进行任何设置,保持默认即可,安装成功后,接下来就是使用插件了,使用之前先来介绍下WP-CodeBox插件的相关语法:

<pre lang=”LANGUAGE” line=”N” file=”download.txt” colla=”+”>代码</pre>

lang=”LANGUAGE”:代码的语言,如ASP、PHP、Java等

file=”download.txt”:创建一个可下载的保存名称

line=”N”:开始行数

colla=”+/-”: ”+“表示展开,”-“表示收缩

知道语法后我们,就可以在文章中添加高亮代码了,新建post或pages页面时插入代码,进入HTML编辑状态(一定要记住),插入相关代码,示例如下:
**Example 1: PHP, no line numbers** 阅读全文 »

收藏PHP常用函数

zhang 发表于 PHP 分类,标签:
0

1.获取IP

?Download getip.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
< ?
function GetIP() { //获取IP
    if ($_SERVER["HTTP_X_FORWARDED_FOR"])
        $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; //oSPHP.COM.CN
    else if ($_SERVER["HTTP_CLIENT_IP"])
        $ip = $_SERVER["HTTP_CLIENT_IP"];
    else if ($_SERVER["REMOTE_ADDR"])
        $ip = $_SERVER["REMOTE_ADDR"];
    else if (getenv("HTTP_X_FORWARDED_FOR"))
        $ip = getenv("HTTP_X_FORWARDED_FOR");
    else if (getenv("HTTP_CLIENT_IP"))
        $ip = getenv("HTTP_CLIENT_IP");
    else if (getenv("REMOTE_ADDR"))
        $ip = getenv("REMOTE_ADDR");
    else
        $ip = "Unknown";
    return $ip;
}
?>

2.

1
2
3
4
5
6
7
8
PHP重定向
< ?
方法一:header("Location: index.php");
方法二:echo "<scrīpt>window.location ="$PHP_SELF";";
方法三:echo "<meta HTTP-EQUIV="Refresh" CONTENT="0; URL=index.php">";
 
?> 
</meta>

阅读全文 »

在生产环境中使用php性能测试工具xhprof

zhang 发表于 PHP 分类,标签:
19

xhprof是facebook开源出来的一个php性能测试工具,也可以称之为profile工具,这个词不知道怎么翻译才比较达意。跟之前一直使用的xdebug相比,有很多类似之处。以前对xdebug有一些记录还可以供参考,但是它的缺点是对性能影响太大,即便是开启了profiler_enable_trigger参数,用在生产环境中也是惨不忍睹,cpu立刻就飙到high。

而xhprof就显得很轻量,是否记录profile可以由程序控制,因此,用在生产环境中也就成为一种可能。在它的文档上可以看到这样一种用法:

以万分之一的几率启用xhprof,平时悄悄的不打枪。

if (mt_rand(1, 10000) == 1) {
xhprof_enable(XHPROF_FLAGS_MEMORY);
$xhprof_on = true;
}

在程序结尾处调用方法保存profile 阅读全文 »

PHP开发人员如何突破成长瓶颈

zhang 发表于 PHP 分类,标签: ,
3

先明确我所指的PHP工程师,是指毕业工作后,主要以PHP进行WEB系统的开发,没有使用其他语言工作过。工作经验大概在3~4年,普通的WEB系统(百万级访问,千成级数据以内或业务逻辑不是特别复杂)开发起基本得心应手,没有什么问题。但他们会这样的物点:

* 除了PHP不使用其它的语言,可能会点shell 脚本。
* 对PHP的掌握不精(很多PHP手册都没有看完,库除外)
* 知识面比较窄(面对需求,除开使用PHP和mysql ,不知道其它的解决办法)
* PHP代码以过程为主,认为面向对象的实现太绕,看不懂

  这些PHPer 在遇到需要高性能,处理高并发,大量数据的项目或业务逻辑比较复杂(系统需要解决多领域业务的问题)时,缺少思路。不能分析问题的本质,技术判断力比较差,对于问题较快能找出临时的解决办法,但常常在不断临时性的解决办法中,系统和自己一步步走向崩溃。那怎么提高自己呢?怎么可以挑战难度更高的系统?

更高的挑战在那里? 阅读全文 »

php中全等(===)和相等(==)的用法区别

zhang 发表于 PHP 分类,标签:
1

我们来看一下下面一个程序:
$str = “0d52”;
If (0==$str)
{echo “真”}
Else
{echo “假”}

这个程序运行的结果出人意料, “0d52”居然
被PHP认为和0相等了。
为什么会出现这样的情况呢?
执行关系运算”==“时要求运算符两边的数据
类型必须一致,所以等号右边的字符串被强制
转换为了整型0。

这就是许多弱类型语言的缺点。
这种错误在我们的程序中是不能够容忍的,
有没有什么办法来解决这个问题呢?
答案当然是可以的,在PHP中给我们提供了
全等于来解决类似的问题。

现在我们将程序改写成如下形式以诠释全等于
的工作原理。
$str = “0d52”;
If (0===$str)
{echo “真”}
Else
{echo “假”}

阅读全文 »

在zend studio集成Aptana

admin 发表于 PHP, web开发 分类,标签:
6

众所周知 Zend Studio 和 Aptana 分别是编写 PHP 和 JavaScript 的利器,作为 Web 开发者,经常需要编写这两种代码。若分别安装 Zend Studio 和 Aptana,不仅浪费硬盘空间,还严重占用计算机的内存资源。由于二者均基于 Eclipse ,我们就有了将它们集成在一起的可能。 本篇文章中使用的是 Zend Studio 7.2.1 和 Aptana 2.0.5 。请注意 Aptana 有两个版本,分别是 Standalone Version 和 Eclipse Plug-in Version,这里我们使用的是 Eclipse Plug-in Version。

1.在下载并安装完成 Zend Studio 之后,从 Help 菜单中选择 Install New Software… 以打开安装软件对话框。如图:

Install New Software
Install New Software

2.将 URL:  http://download.aptana.com/studio3/plugin/install 填写进 Work with 后的输入框里,点击 Add.

Work with
Work with

3.在弹出的对话框中填写 Name: 为 Aptana,点击 OK 按钮。如图: 阅读全文 »

32位 与 64 位的区别 php

zhang 发表于 Linux, PHP 分类,
10

32位系统
echo ip2long(“172.16.1.63″);
结果 -1408237249
64位操作系统
echo ip2long(“172.16.1.63″);

结果 2886730047
32位的操作系统 整型 最大 2_32次幂 无符号数 无符号的范围是0到4294967295。
有符号数 2_32次幂 -2147483648到2147483647。
64操作系统 整型 最大 2_64次幂 无符号数 0-1.84467440737E+019
有符号数 2_64次幂 到 -9.22337203685E+018 到 9.22337203685E+018

切记64与32位系统之间的差距.与各种软件在64位与32位操作系统开发过程中要严重注意

PHP 中的整数是 C 语言的中的long 类型,是有符号的,最大值是 2^31 。在 64 位平台上,long可以达到 2^63.

  这样的话,有些PHP函数输出的结果在各个平台上就会不一致了。

  php -r “echo ip2long(’255.255.255.255′);” 在64位平台下是: 4294967295, 在32位平台下是 -1。还有比如 filesize 在 文件 大于 2G的时候,在不同的平台下结果就不一致了。

  解决这个问题很简单,sprintf(“%u”, filesize($file)). 把结果转换为 一个字符串。为什么结果会一样呢:无符号数 4294967295 的补码 和 有符号数 -1 的补码 是一样的。类似,返回值为int 最后结果可能大于 2^31 的函数,都要用这样的方法处理。

  注意,返回的虽然是一个字符串,但是,当进行四则运算的时候,PHP会自动装换。如果 数大于 2^31 会转换为 int 如果大于 了,就转换为double。
原文载自:http://hi.baidu.com/tdzpf/blog/item/49e0e81e49d4cee11ad5766c.html

如何才能称之为良好的php代码

zhang 发表于 PHP 分类,标签:
1
php

php

1.优良的PHP代码应该是结构化的。
2.优良的PHP代码应该是规范化的。
3.优良的PHP代码应该是自适应的。
4.优良的PHP代码应该是安全的。

PHP代码的优劣体现在哪里?
1.未优化过的php代码

echo(”

Search results for query: ” .
    $_GET['query'] . “.

”);

2.简单优化过的代码


echo(”

Search results for query: ” .
    htmlspecialchars($_GET['query']) . “.

”);

3.合理优化过的代码 阅读全文 »

wordpress中为文章加上访问密码

zhang 发表于 WordPress 分类,标签:
1

你有没有一天,如果一篇文章只让你想要看的人看到,别人怎么看也看不到,像这样你知道如何在wordpress中实现吗?其实就是我们平时用的QQ空间的日志或相片,如果你不知它的访问密码,你是无法进行查看的。

下面我们来说说如何在wordpress使用这一功能:

当我们在wordpress后台添加完文章了,在点击“发布”时,我们找到“公开度”在其里面选择”密码保护”,然后在密码框中输入你的查看密码即可,然后点击“发布”。这样以后只要访问你这篇文章,都会让其输入查看密码,如果密码通过才可以看到相应的内容。如密码校验没有验过,文章中的内容你是任何也看不到的。 阅读全文 »