version_compare(zend_version(), “2-dev”, “ge”);


    第三个参数是操作符参数,而不是另外一个版本


    pear私有变量是以’_’开头的变量


    PHP4中的is_a()函数不推荐使用,推荐使用 instanceof


    PHP5中可以通过foreach()循环的参数加上引用符号,让你在遍历数组的时候更改数组的值


    变量的间接引用
    $name = ‘john’;
    $$name = ‘Rename John’;
    echo $john;
    显示 Rename John


    超全局变量
    $_GET 一个包含所有PHP从客户浏览器接受的GET变量的数组
    $_POST 一个包含所有PHP从客户浏览器接收的POST变量的数组
    $_COOKIE 一个包含所有PHP从客户浏览器接收的cookies的数组
    $_ENV 一个包含环境变量的数组
    $_SERVER 一个存放web服务器变量的数组


    PHP特殊字符串
    双引号

    \n 换行符
    \t 制表符
    \“ 双引号
    \\ 反斜线
    \0 ASCII 0 null
    \r 回到行的开始位置
    \$ 标准的$符号,不会被当成变量
    \[0-7]{1,3} 用8进制写的字符,
    \x[0-9A-Fa-f]{1,2} 用16进制写的字符,
    \u{[0-9A-Fa-f]+} 匹配正则表达式的字符序列是 unicode 码位, 该码位能作为 UTF-8 的表达方式输出字符串

    单引号

    \‘ 单引号
    \\ 反斜线

    定界符

    1. <<<END
    2. .........
    3. ......
    4. END

    字符偏移量
    字符的偏移最好为了区分数组使用{}来实现
    $c = ‘Jhon’;
    $c{2} // 标明第三个字符
    数组
    array(1 => ‘jhon’, ‘mark’, ‘Joseph’) 相当于 array(1=>’jhon’, 2=>’mark’, 3=>’Joseph’)


    对象
    self::调用静态变量和静态方法
    $this->调用变量和方法


    PHP5面向对象编程和设计模式
    __call()方法

    1. class HelloWorld
    2. {
    3. function display( $count )
    4. {
    5. for ( $i = 1 ; $i <= $count ; $i ++) {
    6. echo 'I say HelloWorld ' . $i . ' times<br/>' ;
    7. }
    8. return $count ;
    9. }
    10. }
    11. class HelloWorldDelegator
    12. {
    13. private $obj ;
    14. function __construct()
    15. {
    16. $this ->obj = new HelloWorld();
    17. }
    18. function __call( $method , $args )
    19. {
    20. return call_user_func_array( array ( $this ->obj, $method ), $args );
    21. }
    22. }
    23. $obj = new HelloWorldDelegator();
    24. $obj ->display( 6 );

    PHP5面向对象编程和设计模式
    ArrayAccess接口

    1. class doUser implements ArrayAccess {
    2. private $db ;
    3. function offsetExists( $name )
    4. {
    5. return $this ->db->userExists( $name );
    6. }
    7. function offsetGet( $name )
    8. {
    9. return $this ->db->userGet( $name );
    10. }
    11. function offsetSet( $name , $value )
    12. {
    13. return $this ->db->userSet( $name , $value );
    14. }
    15. function offsetUnset( $name )
    16. {
    17. return $this ->db->userDelete( $name );
    18. }
    19. }
    20. $douser = new doUser();
    21. echo $douser [ 'jhon' ];

    PHP5面向对象编程和设计模式
    迭代器

    1. class NumberSquared implements Iterator
    2. {
    3. private$start , $end , $cur ;
    4. public function__construct( $start , $end )
    5. {
    6. $this->start = $start ;
    7. $this->end = $end ;
    8. }
    9. public function rewind()
    10. {
    11. $this->cur = $this ->start;
    12. }
    13. public function key()
    14. {
    15. return $this ->cur;
    16. }
    17. public function current()
    18. {
    19. return pow( 3 , $this ->cur);
    20. }
    21. public function next()
    22. {
    23. return $this ->cur++;
    24. }
    25. public function valid()
    26. {
    27. return $this ->cur <= $this ->end;
    28. }
    29. }
    30. $obj = new NumberSquared( 4 , 9 );
    31. foreach ( $obj as $key => $value ) {
    32. echo $key . '---' . $value . '<br/>' ;
    33. }

    PHP的自定义错误显示函数
    set_error_handler — 设定一个用户自定义的错误处理函数
    这个函数遵循以下的命名规范.

    1. handler ( int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]] )
    2. set_error_handler( 'display_error' );
    3. function display_error( $type , $msg , $file , $line )
    4. {
    5. echo $type . '<br/>' ;
    6. echo $msg . '<br/>' ;
    7. echo $file . '<br/>' ;
    8. echo $line . '<br/>' ;
    9. }

    PHP文件上传
    这个一般是我的弱点,自己没怎么试过..

    1. $_FILES['INPUT_NAME']的参数
    2. name 字段中文件的名称
    3. type 类型
    4. tmp_name 临时文件的名称
    5. error 错误
    6. size 文件的大小
    7. error 的参数
    8. 0 UPLOAD_ERR_OK
    9. 1 UPLOAD_ERR_INI_SIZE
    10. 2 UPLOAD_ERR_FORM_SIZE
    11. 3 UPLOAD_ERR_PARTIAL
    12. 4 UPLOAD_ERR_NO_FILE