将_construct放在if()中

时间:2014-01-07 07:19:18

标签: php class oop constructor

有办法:

class foo {
    private $skey;

    if(isset($_SESSION['some_val']) {
       function __construct(){ 
          $skey = 'something';
       }
    }
}

如果$key不存在,我只想创建$_SESSION['some_val'](某物)的初始值。

提前致谢

修改

这就是我帮助你做的事情

function __construct() {
    if(!isset($_SESSION['skey'])) {
    $tp = new Text_Password();
    $skey = $tp->create();
    $this->skey = $skey;
    $_SESSION['skey'] = $this->skey;
    }

}

3 个答案:

答案 0 :(得分:1)

不。但是,您可以这样做:

class foo {
  function __construct()
  { 
    if(isset($_SESSION['some_val']) 
    {
      $this->key = 'something';
    }
  }
}

答案 1 :(得分:0)

你应该把它放在构造方法中。

class foo {
  private $key;

  public function __construct(){ 
     if(isset($_SESSION['some_val']) {
       $this->key = 'something';
     }
  }
}

答案 2 :(得分:0)

不,那是不可能的。你可以这样做:

class foo {
   private $key;
   function __construct(){ 
      if (isset($_SESSION['some_val']) {
         $this->key = 'something';
      } else {
         $this->key = null;
      }
   }
}

或者更好的是,使用参数化构造函数并将$_SESSION内容保留在主应用程序中:

class foo {
   private $key;
   function __construct($init = null){
       $this->key = $init;
   }
}

然后在你的主应用程序中:

if (isset($_SESSION['some_val'])) {
    $f = new foo('something');
} else {
    $f = new foo();
}