不理解这个new $people();

有一段php代码模拟钩子机制

    class Ball{  
          public $people;
          public function down(){  
            echo    "ball is downing ";  
            //注册事件  
            $this->people=new Hook();
            $this->people->add("man");  
            $this->people->add("woman");  
        }  
          
        public function do(){  
            $this->people->exec();  
        }     
      
    }  
      
    // 钩子的定义  
    class Hook{  
        private $hooklist = null ;  
        // 添加  
        public  function add($people){         
            $this->hooklist[] =  new $people();        
        }  
        // 触发事件  
        public function exec(){  
            foreach($this->hooklist as $people){  
                  $people->act();
            }  
              
        }  
    }  
    // 钩子实现  
    class man{  
        public function act(){  
            echo 'nothing';  
        }     
    }  
      
    class woman{  
        public function act(){  
            echo 'oh my god ';  
        }     
    }  
      
      
    $ball = new Ball();  
    $ball ->down();  
    $ball ->do();  
    

这里的new $people()是一种什么用法?
没有这个people类哈


        public  function add($people){         
        $this->hooklist[] =  new $people();        
    }  
阅读 1.3k
2 个回答

$people = 'man';,new $people();相当于new man();

$people = 'woman';,new $people();相当于new woman();

你没看到people前面加了个$吗,说明只是一个变量,但是这个变量的值可能搭配上new操作就是一个函数的实例呢

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题