紫林舞剑吧 关注:2贴子:141

[php]学习日记

只看楼主收藏回复

近日记录一下学习PHP时候所学到的内容,发现发在个人贴吧挺不错的,还方便随时查看。反正这吧基本就我一个人,也不会有人嘲笑我吧


IP属地:浙江1楼2016-04-25 15:49回复
    __FILE__:php魔术常量
    该参数的作用是获取当前的PHP脚本的绝对路径和文件名
    通常与之一起使用的还有basename和dirname函数
    basename:获取当前路径下的文件名
    例如:
    <?php
    //__FILE__= "D:/testweb/home.php"; 这是当前的文件路径
    //显示带有文件扩展名的文件名
    echo basename(__FILE__);
    //显示不带有文件扩展名的文件名
    echo basename(__FILE__,".php");
    ?>
    输出:
    home.php
    home
    dirname:获取参数路径里的父路径,可以嵌套使用
    <?php
    //__FILE__= "D:/testweb/home.php"; 这是当前的文件路径
    //显示带有文件扩展名的文件名
    echo dirname(__FILE__);
    echo dirname(dirname(__FILE__);)
    ?>
    输出:
    D:/testweb
    D:


    IP属地:浙江2楼2016-04-25 16:04
    回复
      对于关联数组引用补充
      要循环遍历关联数组,可以使用foreach
      <?php
      $age=array("Bill"=>"60","Steve"=>"56","Mark"=>"31");
      foreach($age as $x=>$x_value) {
      echo "Key=" . $x . ", Value=" . $x_value;
      echo "<br>";
      }
      ?>
      输出:
      Key=Bill, Value=60
      Key=Steve, Value=56
      Key=Mark, Value=31


      IP属地:浙江4楼2016-04-25 16:17
      回复
        register_shutdown_function:
        PHP中有一个叫做 register_shutdown_function 的函数,可以让我们设置一个当执行关闭时可以被调用的另一个函数.
        也就是说当我们的脚本执行完成或意外死掉导致PHP执行即将关闭时,我们的这个函数将会被调用
        所以,我们可以使用在脚本开始处设置一个变量为false,然后在脚本末尾将之设置为true的方法,让PHP关闭回调函数检查脚本完成与否. 如果我们的变量仍旧是false,我们就知道脚本的最后一行没有执行,因此它肯定在程序执行到某处死掉了.
        <?php
        $clean = false;
        function shutdown_func(){
        global $clean;
        if (!$clean){
        die("not a clean shutdown");
        }
        return false;
        }
        register_shutdown_function("shutdown_func");
        $a = 1;
        $a = new FooClass(); // 将因为致命错误而失败
        $clean = true;
        ?>
        register_shutdown_function 执行机制是:PHP把要调用的函数调入内存。当页面所有PHP语句都执行完成时,再调用此 函数。注意,在这个时候从内存中调用,不是从PHP页面中调用,所以上面的例子不能使用相对路径,因为PHP已经当原来的页面不存在了。就没有什么相对路 径可言。
        注意:register_shutdown_function 是指在执行完所有PHP语句后再调用函数,不要理解成客户端关闭流浏览器页面时调用函数。
        引自:http://www.jb51.net/article/37815.htm


        IP属地:浙江7楼2016-04-25 16:27
        回复
          set_exception_handler 自定义异常处理
          set_error_handler 函数设置用户自定义的错误处理函数
          由于语法差不多,仅用set_error_handler举例
          语法
          set_error_handler(error_function,error_types)
          提示:如果使用了该函数,会完全绕过标准的 PHP 错误处理函数,如果必要,用户定义的错误处理程序必须终止 (die() ) 脚本。
          function exception_handler($exception) {
          echo "Uncaught exception: " , $exception->getMessage(), "/n";
          }
          set_exception_handler('exception_handler');
          set_exception_handler就是设置了一下,当你的程序需要抛出一个异常的时候调用哪个自定义的函数。
          补充:
          参数部分可以是数组
          set_error_handler(array('core', 'handleError'));
          数组第一个部分表示类名,第二个部分表示该类中的函数


          IP属地:浙江9楼2016-04-25 16:34
          回复
            接第10层
            spl_autoload_register()
            再看spl_autoload_register(),这个函数与__autoload有与曲同工之妙,看个简单的例子:
            <?
            function loadprint( $class ) {
            $file = $class . '.class.php';
            if (is_file($file)) {
            require_once($file);
            }
            }
            spl_autoload_register( 'loadprint' );
            $obj = new PRINTIT();
            $obj->doPrint();
            ?>
            将__autoload换成loadprint函数。但是loadprint不会像__autoload自动触发,这时spl_autoload_register()就起作用了,它告诉PHP碰到没有定义的类就执行loadprint()。
            spl_autoload_register() 调用静态方法
            <?
            class test {
            public static function loadprint( $class ) {
            $file = $class . '.class.php';
            if (is_file($file)) {
            require_once($file);
            }
            }
            }
            spl_autoload_register( array('test','loadprint') );
            //另一种写法:spl_autoload_register( "test::loadprint" );
            $obj = new PRINTIT();
            $obj->doPrint();
            ?>
            引自:http://blog.csdn.net/panpan639944806/article/details/23192267


            IP属地:浙江11楼2016-04-25 19:01
            回复
              PHP中::、->、self、$this操作符的区别
              在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符::,反之如果被引用的变量或者方法没有被声明成const或者static,那么就必须使用操作符->。
              另外,如果从类的内部访问const或者static变量或者方法,那么就必须使用自引用的self,反之如果从类的内部访问不为const或者static变量或者方法,那么就必须使用自引用的$this。


              IP属地:浙江12楼2016-04-25 19:12
              回复
                is_object
                (PHP 4, PHP 5)
                is_object — 检测变量是否是一个对象
                是一个对象则返回true,否则返回false
                与之类似的还有:
                is_bool()、is_int()、is_integer()、is_float()、is_string() 和 is_array()。


                IP属地:浙江13楼2016-04-25 19:23
                回复
                  strtolower()
                  strtolower() 函数把字符串转换为小写。
                  注释:该函数是二进制安全的。
                  相关函数:
                  lcfirst() - 把字符串中的首字符转换为小写
                  strtoupper() - 把字符串转换为大写
                  ucfirst() - 把字符串中的首字符转换为大写
                  ucwords() - 把字符串中每个单词的首字符转换为大写


                  IP属地:浙江14楼2016-04-25 19:32
                  回复
                    strpos()
                    查找 "php" 在字符串中第一次出现的位置:
                    <?phpecho strpos("You love php, I love php too!","php");?>
                    输出:9
                    注释:strpos() 函数对大小写敏感。
                    注释:该函数是二进制安全的。
                    相关函数:
                    stripos() - 查找字符串在另一字符串中第一次出现的位置(不区分大小写)
                    strripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)
                    strrpos() - 查找字符串在另一字符串中最后一次出现的位置(区分大小写)


                    IP属地:浙江15楼2016-04-25 19:41
                    回复
                      list():
                      把数组中的值赋给一些变量:
                      <?php
                      $my_array = array("Dog","Cat","Horse");
                      list($a, $b, $c) = $my_array;
                      echo "I have several animals, a $a, a $b and a $c.";
                      ?>
                      又例:
                      <?php
                      $my_array = array("Dog","Cat","Horse");
                      list($a, , $c) = $my_array;
                      echo "我在这里只用了 $a 和 $c 变量。";
                      ?>


                      IP属地:浙江18楼2016-04-25 20:07
                      回复
                        explode()
                        把字符串打散为数组:
                        <?php
                        $str = "Hello world. I love Shanghai!";
                        print_r (explode(" ",$str));
                        ?>
                        输出:
                        Array ( [0] => Hello [1] => world. [2] => I [3] => love [4] => Shanghai! )
                        定义和用法
                        explode() 函数把字符串打散为数组。
                        注释:"separator" 参数不能是空字符串。
                        注释:该函数是二进制安全的。


                        IP属地:浙江19楼2016-04-25 20:11
                        回复
                          substr()
                          substr() 函数返回字符串的一部分。
                          语法substr(string,start,length)
                          string:必需。规定要返回其中一部分的字符串。
                          start:
                          必需。规定在字符串的何处开始。
                          正数 - 在字符串的指定位置开始
                          负数 - 在从字符串结尾开始的指定位置开始
                          0 - 在字符串中的第一个字符处开始
                          length:
                          可选。规定被返回字符串的长度。默认是直到字符串的结尾。
                          正数 - 从 start 参数所在的位置返回的长度
                          负数 - 从字符串末端返回的长度
                          例:
                          使用带有不同正负数的 start 参数:
                          <?php
                          echo substr("Hello world",10)."<br>";
                          echo substr("Hello world",1)."<br>";
                          echo substr("Hello world",3)."<br>";
                          echo substr("Hello world",7)."<br>";
                          echo substr("Hello world",-1)."<br>";
                          echo substr("Hello world",-10)."<br>";
                          echo substr("Hello world",-8)."<br>";
                          echo substr("Hello world",-4)."<br>";?>
                          输出:
                          d
                          ello world
                          lo world
                          orld
                          d
                          ello world
                          lo world
                          orld
                          又例:
                          使用带有不同正负数的 start 和 length 参数:
                          <?php
                          echo substr("Hello world",0,10)."<br>";
                          echo substr("Hello world",1,8)."<br>";
                          echo substr("Hello world",0,5)."<br>";
                          echo substr("Hello world",6,6)."<br>";
                          echo substr("Hello world",0,-1)."<br>";
                          echo substr("Hello world",-10,-2)."<br>";
                          echo substr("Hello world",0,-6)."<br>";
                          echo substr("Hello world",-2-3)."<br>";?>
                          输出:
                          Hello worl
                          ello wor
                          Hello
                          world
                          Hello worl
                          ello wor
                          Hello
                          world


                          IP属地:浙江21楼2016-04-25 20:39
                          回复
                            set_magic_quotes_runtime():
                            php函数 set_magic_quotes_runtime(0); 可以修改php.ini中 magic_quotes_runtime boolean的设置当你的数据中有一些
                            \
                            "
                            '
                            这样的字符要写入到数据库里面,又想不被过滤掉的时候,它就很有用,会在这些字符前加上\
                            你好\世界"哈哈"
                            你好\\世界\"哈哈\"
                            set_magic_quotes_runtime是用来设置PHP 环境配置的变量 magic_quotes_runtime 值。
                            0-关闭 1-打开
                            php程序中检测状态用get_magic_quotes_runtime,返回 0 表示关闭本功能;返回 1 表示本功能打开。若 magic_quotes_runtime 打开时,所有外部引入的数据库资料或者文件等等都会自动转为含有反斜线溢出字符的资料。
                            例如在用PHP导入数据库的时候就会用到。
                            PHP5.3中 bool set_magic_quotes_runtime ( bool $new_setting )函数过时.把函数:
                            set_magic_quotes_runtime($new_setting);
                            替换成:
                            ini_set("magic_quotes_runtime", $new_setting);
                            可用如下方法判断php版本:
                            if(PHP_VERSION < '5.3.0') {
                            set_magic_quotes_runtime(0);
                            }


                            IP属地:浙江27楼2016-04-27 10:34
                            回复
                              empty
                              如果 变量 是非空或非零的值,则 empty() 返回 FALSE。换句话说,”"、0、”0″、NULL、FALSE、array()、var $var、未定义;以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。
                              isset
                              如果 变量 存在(非NULL)则返回 TRUE,否则返回 FALSE(包括未定义)。变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。注意,isset对于NULL值变量,特殊处理。
                              is_null
                              检测传入值【值,变量,表达式】是否是null,只有一个变量定义了,且它的值是null,它才返回TRUE . 其它都返回 FALSE 【未定义变量传入后会出错!】.
                              更多说明:
                              使用 unset() 释放变量之后,它将不再是 isset()。
                              PHP函数isset()只能用于变量,传递任何其它参数都将造成解析错误。
                              检测常量是否已设置可使用 defined() 函数。
                              例子: empty() 与 isset() 的一个简单比较
                              复制代码代码如下:
                              <?php
                              $var = 0;
                              // 结果为 true,因为 $var 为空
                              if (empty($var)) {
                              echo '$var is either 0 or not set at all';
                              }
                              // 结果为 false,因为 $var 已设置
                              if (!isset($var)) {
                              echo '$var is not set at all';
                              }
                              ?>


                              IP属地:浙江29楼2016-04-27 11:10
                              回复