2010-12-22 100 views
-1

我想再次调用__construct函数在我班上通过PHP中的类的另一个函数再次调用构造类?

是这样的:

class user{ 
    function __construct($ID = null) 
    { 
     if($ID){ 
      //code 
     } 

    function findUser() 
    { 
     //code 
     $this->__construct($ID); 
    } 
} 
当然

,这并不工作,但什么是做这种正确的方法是什么?

+1

`$ this - > __ construct($ ID)`will be working,you need按名称调用函数。当然,构造函数只能被调用一次。 [@zerkms](http://stackoverflow.com/questions/4505542/call-the-construct-class-again-trough-another-function-of-the-class-in-php/4505560#4505560)有权利回答。 – deceze 2010-12-22 01:55:38

+0

这是行不通的,因为你错过了两个下划线。 – BoltClock 2010-12-22 01:59:37

+0

这是一个错字:)我只是修复它 – Mars 2010-12-22 02:29:28

回答

4

如果你想覆盖当前情况下的电流值,我会做:

class user{ 
    function __construct($ID = null) 
    { 
     $this->reinit($ID); 
    } 

    function reinit($id) 
    { 
     if($id) { 
      //code 
     } 
    } 
} 
5
class user{ 
    function __construct($ID = null) 
    { 
     if($ID){ 
      //code 
     } 

    static function find($id) 
    { 
     return new user($id); 
    } 
} 

$user = user::find(42); 
+0

+1这是要走的路,如果你打算应用像工厂模式的东西。 – BoltClock 2010-12-22 01:59:11

0

尝试:

function findUser(){ 

    self::__construct($ID); 
} 
2

重命名功能,这样就可以把它叫做:

class user { 
    function __construct($ID = null) 
    { 
     $this->initialize($ID); 
    } 

    private function initialize($ID = null) 
    { 
     if($ID){ 
      //code 
    } 

    function findUser() 
    { 
     //code 
     $this->initialize($ID); 
    } 
} 
相关问题