2014-01-27 5 views
-1

ENVкак вызывать функции в Constructure в PHP

PHP 5.4

Как вызывать функции в Constructure в PHP? Он может выглядеть как переменная функция или указатель функции. Код, как следует, получает ошибку sytax на function $EmailAddress. Как это исправить:

function __construct($username,$password,$EmailAddress,$mailserver='localhost',$servertype='imap',$port='143',$ssl = true) { 
     if($servertype=='imap') { 
      if($port=='') 
       $port='143'; 
      $strConnect='{'.$mailserver.':'.$port.'/imap/ssl/novalidate-cert}'; 
     } else { 
      $strConnect='{'.$mailserver.':'.$port. '/pop3'.($ssl ? "/ssl" : "").'}INBOX'; 
     } 
     //echo $port; 
     $this->server = $strConnect; 
     $this->username = $username; 
     $this->password = $password; 
     $this->email = $EmailAddress; 
    } 
    //Connect To the Mail Box 
    function $EmailAddress { 
     $this->[email protected]_open($this->server,$this->username,$this->password); 

     if(!$this->marubox) { 
      echo "Error: Connecting to mail server"; exit; 
     } 
    } 

EDIT

не работает, либо.

 $this->email = "EmailAddress"; 
    } 
    //Connect To the Mail Box 
    function EmailAddress() { 
     $this->[email protected]_open($this->server,$this->username,$this->password); 

     if(!$this->marubox) { 
      echo "Error: Connecting to mail server"; exit; 
     } 
    } 
+0

Что это? Имя вашей функции не может быть переменной, если вы объявляете ее в статической языковой конструкции. Вместо этого используйте закрытие –

+0

Ну, как назвать это в конструкции. –

+0

Зачем использовать имя функции danymic вообще? Просто выполните обычную функцию и используйте параметр функции для электронной почты? Сложность - это плохо! Избегайте его любой ценой и используйте его только в том случае, если он того стоит. – ToBe

ответ

1

Try,

function __construct($username,$password,$EmailAddress,$mailserver='localhost',$servertype='imap',$port='143',$ssl = true) { 
     if($servertype=='imap') { 
      if($port=='') 
       $port='143'; 
      $strConnect='{'.$mailserver.':'.$port.'/imap/ssl/novalidate-cert}'; 
     } else { 
      $strConnect='{'.$mailserver.':'.$port. '/pop3'.($ssl ? "/ssl" : "").'}INBOX'; 
     } 
     //echo $port; 
     $this->server = $strConnect; 
     $this->username = $username; 
     $this->password = $password; 
     $this->email = $EmailAddress; 
     $this->connect_imap(); // call the connect method 
    } 
    //Connect To the Mail Box 
    function connect_imap() { 
     $this->[email protected]_open($this->server,$this->username,$this->password); 

     if(!$this->marubox) { 
      echo "Error: Connecting to mail server"; exit; 
     } 
    } 

Если вы хотите, чтобы вызвать функцию динамически, то попробуйте,

class test{ 
    private $func; 
    public function __construct($functionName){ 
     $this->func = $functionName; 
     $this->{$this->func}();  
    } 

    public function my_func(){ 
     echo "Hello World"; 
    } 

} 

$r = new test('my_func'); 
1

У вас есть логическая ошибка в коде. Вы должны изменить имя функции и вызвать ее так.

function __construct($username,$password,$EmailAddress,$mailserver='localhost',$servertype='imap',$port='143',$ssl = true) { 
    if($servertype=='imap') { 
     if($port=='') 
      $port='143'; 
     $strConnect='{'.$mailserver.':'.$port.'/imap/ssl/novalidate-cert}'; 
    } else { 
     $strConnect='{'.$mailserver.':'.$port. '/pop3'.($ssl ? "/ssl" : "").'}INBOX'; 
    } 
    //echo $port; 
    $this->server = $strConnect; 
    $this->username = $username; 
    $this->password = $password; 
    $this->email = $EmailAddress; 

    // Call a function like this. 
    $this->setupEmail(); 
} 
//Connect To the Mail Box 
private function setupEmail() { 
    $this->[email protected]_open($this->server,$this->username,$this->password); 

    if(!$this->marubox) { 
     echo "Error: Connecting to mail server"; exit; 
    } 
} 
Смежные вопросы