php拾遗1

WBOY
Libérer: 2016-06-23 14:34:46
original
908 Les gens l'ont consulté

1,魔术常量,有很多,总结之
   A 识别脚本运行时的位置或名称等
    _LINE_  返回当前行号
    _FILE_  返回当前脚本的完整路径和文件名,包含一绝对路径
    _FUNCTION_  返回该函数被定义时的名字(大小写敏感)
    _CLASS_   类名称,返回该类别定义时的名字(大小写敏感)
    _METHOD_   类的成员方法名称(大小写敏感)
    class MagicTest {
      //返回当前函数的名称
     function test_function() {
         return __FUNCTION__;
     }
     //返回当前类的名字
     function test_class() {
         return __CLASS__;
     }
     //返回当前方法的名字
     function test_method() {
         return __METHOD__;
     }
 }
 echo "_LINE_运行时的所在行号: ".__LINE__."
";
 echo "当前PHP脚本的完整路径: ".__FILE__."
";
 echo "当前执行的类名: ".MagicTest::test_class()."
";
 echo "当前执行的函数名: ".MagicTest::test_function()."
";
 echo "当前类的方法名: ".MagicTest::test_method()."
";
?>
    还有OOP里的魔术
   _get()与_set(),_call(),当试图写入一个不存在或不可见的属性时,会执行_set()方法,如
   class myShop {
   private $p = array();
  
    function __set($name, $value) { //取得属性名称和值
      echo "set::$name:$value
";
     $this->p[$name] = $value;
   }
  
   function __get($name) { //取得属性名称
     print "get::$name
";
     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. "
";
 echo "梨=". $shop->pear. "
";
?>
 
2 PHP里的CLONE()
    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。
  还有注意的是==比较两个对象的内容,===比较对象的句丙,即引用的 地址

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal