php拾遗1

来源:互联网 发布:删除重复数据 sql 编辑:程序博客网 时间:2024/05/07 14:49
1,魔术常量,有很多,总结之
   A 识别脚本运行时的位置或名称等
    _LINE_  返回当前行号
    _FILE_  返回当前脚本的完整路径和文件名,包含一绝对路径
    _FUNCTION_  返回该函数被定义时的名字(大小写敏感)
    _CLASS_   类名称,返回该类别定义时的名字(大小写敏感)
    _METHOD_   类的成员方法名称(大小写敏感)
   <?php
 class MagicTest {
      //返回当前函数的名称
     function test_function() {
         return __FUNCTION__;
     }
     //返回当前类的名字
     function test_class() {
         return __CLASS__;
     }
     //返回当前方法的名字
     function test_method() {
         return __METHOD__;
     }
 }
 echo "_LINE_运行时的所在行号: ".__LINE__."<br>";
 echo "当前PHP脚本的完整路径: ".__FILE__."<br>";
 echo "当前执行的类名: ".MagicTest::test_class()."<br>";
 echo "当前执行的函数名: ".MagicTest::test_function()."<br>";
 echo "当前类的方法名: ".MagicTest::test_method()."<br>";
?>

    还有OOP里的魔术
   _get()与_set(),_call(),当试图写入一个不存在或不可见的属性时,会执行_set()方法,如
  <?php
 class myShop {
   private $p = array();
  
    function __set($name, $value) { //取得属性名称和值
      echo "set::$name:$value <br />";
     $this->p[$name] = $value;
   }
  
   function __get($name) { //取得属性名称
     print "get::$name <br />";
     return array_key_exists($name,$this->p) ? $this->p[$name] : null;
   }
 }
 
 $shop = new MyShop();
 $shop->apple = 2;
 $shop->pear = 3;
 $shop->pear++;
 echo "苹果=". $shop->apple. "<br>";
 echo "梨=". $shop->pear. "<br />";
?>

 
2 PHP里的CLONE()
   <?php
 class MyClass {
  public $var = 1;
 }
 $obj1 = new MyClass();
 $obj2 = $obj1;
 $obj2->var = 2;
 print $obj1->var;
?>

    PHP4中上面的输出1,$obj2将值全部赋给$obj1,是建立对象的副本;但PHP5中,$obj1被当一个对象引用处理,当$obj2的值改变时,实际上修改的
是$obj的引用,所以输出2。
  还有注意的是==比较两个对象的内容,===比较对象的句丙,即引用的 地址
原创粉丝点击