php中名字空间及父子继承小例子
编辑时间:2020-06-16 作者:金满斗 浏览量:1779 来源:原创

简单贴个代码,加深理解吧。

<?php
 
/*命名空间Col*/
namespace Col{
    const INSTANCE=3;
    class A {
        private $a   = 'private';
        protected $b = 'protected';
        public $c    = 'public';
        static $d    = 'static';
            public function __construct()
            {
                $this->e = '构造函数里这个变量声明在哪里啊,不用声明吗<br/>';
                var_dump($this->e);
            }
            
            public function __set($property, $value)
            {
                echo ' set ' . $property . '=' . $value;
                $this->$property=$value;
            }
            public function __get($property)
            {
                echo ' get ' . $property;
                $this->$property = '取数值';  // invokes __set() !!
                return $this->$property;
            }
            
            public function printItem($string) 
            {
                echo '父亲的: ' . $string . PHP_EOL;
            }
            
            public function printPHP()
            {
                echo '哈哈哈,太爷有<br/>' . PHP_EOL;
            }
     }

    class B extends A
        {
        public function constructMe()
        {
            $this->e = 'constructed2';
        }
        public function printItem($string)
        {
           return $this->getM($string);
        }

        public function  getM($string){
            echo $string;
            $this->c = "我看看这个";
            return false;
        }
    }

    class C extends B
        {
        public function __construct()
        {
            parent::constructMe();
            echo "孙子你牛X,赢在起跑线";
        }

        public function getC($str){
            $aa = new static();
            
            return   $aa -> getM($str) ||  $aa->c;
        }
    }

    echo " <br/>";
    $a = new A();
    $b = new B(); 
    echo " <br/>";
    echo ' 儿子访问下太爷公用的'.$b->c;
    echo " <br/>";
    echo ' 儿子访问下太爷静态的' .$b->d;   //注意这种方式是爷爷定义了set,get方法才能调用的,正规::
    echo " <br/>";
    $c = new C();
    echo " <br/>";
    echo 'A class: ';
}

namespace Lin{
    use \Col;     //引入上面名字空间
    $grandson = new Col\C();
    $grandson->getM('<br/>参数来了啊');
    var_dump($grandson->c);
    echo "----------------------- <br/>";
    $model = new Col\C();
    $model->getC('<br/>瞎玩');
    var_dump($model->c);
    var_dump($model->getC('<br/>又在瞎玩'));

}

 
/*全局非命名空间代码*/
namespace {
    const INSTANCE=4;
    var_dump(\Col\INSTANCE); 

}
 

 


来说两句吧