美文网首页
类反射reflectionclass

类反射reflectionclass

作者: wangjunmech | 来源:发表于2018-08-21 10:20 被阅读0次
    
    <?php
    
     header("content-type:text/html;charset=utf8");
    
     echo 'more info please go to <a>http://php.net/manual/en/class.reflectionclass.php</a>';
    echo '<link>aaa</link>';
    echo '<input type=button name="test" value="test">';
    echo "<a>xxxx</a>";
    
    //***************************ReflectionClass类 和 ReflectionMethod类
    class Worker {
        public $name='工人';
        protected $age;
        private $money;
        public function __construct($a) {
            echo '构造方法取得参数为:'.$a.'<br>';
        }
        public function greeting() {
            echo 'Hi there, this is'.$this->name.'<br>';
        }
        protected function gotowork(){
            echo 'Go to company to work';
        }
    
        protected function drive(){
            echo 'drive to work';
        }
    }
    
    class Teacher {
        public $name='老师';
        protected $age;
        private $money;
        private $height;
        private $weight;
        public function __construct($a, $b) {
             echo '构造方法取得参数为:'.$a.$b.'<br>';
            $this->a = $a;
            $this->b = $b;
        }
        public function greeting() {
            echo 'Hi there, I am a teacher from High school, and my name is'.$this->name.'<br>';
    
            echo 'Construct args $this->a=', $this->a, ', $this->b=', $this->b.'<br>';
        }
        protected function gotowork(){
            echo 'Go to school to work';
        }
    
        protected function drive(){
            echo 'drive to school to work';
        }
    }
    
    echo '类反射测试<br>获取类的属性:<br>';
    $class = new ReflectionClass('teacher');
    $properties = $class->getProperties();
    foreach ($properties as $property) {
        
     echo $property->getName() . "<br>";
        
    }
    echo '<br>====getEndLine====<br>';
    echo $class->getEndLine();
    echo '<br>====getExtensionName====<br>';
    echo $class->getExtensionName();
    echo '<br>====getFileName====<br>';
    echo $class->getFileName();
    echo '<br>====getMethods====<br>';
    echo "<pre>";
    print_r($class->getMethods()) ;
    echo "</pre>";
    
    echo '<br>====getModifiers====<br>';
    echo $class->getModifiers();
    echo '<br>========<br>';
    
    
    class Instance {
        function __call($className, $arguments) {
            echo "<H2>调用本类没有的方法时显示此消息:</H2>";
            echo "<br>返回类:==".$className;
            echo "<br>返回参数==:";
            if(is_array($arguments)){
                        var_dump($arguments);
                        echo "<br>";
            }else{
                echo $arguments;echo "<br>";
            }
    
            $class = new ReflectionClass($className);
            
            return $class->newInstanceArgs($arguments);
        }
        public function callname()
        {
            echo "<H2>调用到了INSTANCE的方法</H2>";
        }
    }
    
    $inst = new INSTANCE();
    $a1='worker';
    $a2='teacher';
    $foo = $inst->$a2(1,2,3,4,5);
    $foo = $inst->teacher(1,2,3,4,5);
    $foo->greeting();

    相关文章

      网友评论

          本文标题:类反射reflectionclass

          本文链接:https://www.haomeiwen.com/subject/injdiftx.html