Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中返回新实例_Php - Fatal编程技术网

如何在php中返回新实例

如何在php中返回新实例,php,Php,我有以下代码: class Email_Driver { public function testEmail_Driver() { echo "testEmail_Driver".RT; } } class Email_Smtp extends Email_Driver { public function testEmail_Smtp() { echo "testEmail_Smtp&quo

我有以下代码:

class Email_Driver
{
   public function testEmail_Driver()
    {
       echo "testEmail_Driver".RT;
    }
}
    
class Email_Smtp extends Email_Driver
{
    public function testEmail_Smtp()
    {
       echo "testEmail_Smtp".RT;
    }
}

class Email
{
  public $instance;

  public function __construct()
  {
      $this->instance = new Email_Smtp();
      return $this->instance;
  }
}


$mail = new Email();
var_dump($mail);
$mail->testEmail_Smtp();      //Fatal error: Uncaught Error: Call to undefined method Email::testEmail_Smtp()
$mail->testEmail_Driver();

在这种情况下,如何访问methode testEmail\u Smtp()和testEmail\u Driver()。基本上,class
Email
现在的作用与class
Email\u Smtp
完全相同:

class Email_Driver
{
   public function testEmail_Driver()
    {
       echo "testEmail_Driver".PHP_EOL;
    }
}
    
class Email_Smtp extends Email_Driver
{
    public function testEmail_Smtp()
    {
       echo "testEmail_Smtp".PHP_EOL;
    }
}

class Email extends Email_Smtp 
{
  // any more methods
}

$mail = new Email();
var_dump($mail);
$mail->testEmail_Smtp();      
$mail->testEmail_Driver();

下面的代码应该足够了。基本上,class
Email
现在的作用与class
Email\u Smtp
完全相同:

class Email_Driver
{
   public function testEmail_Driver()
    {
       echo "testEmail_Driver".PHP_EOL;
    }
}
    
class Email_Smtp extends Email_Driver
{
    public function testEmail_Smtp()
    {
       echo "testEmail_Smtp".PHP_EOL;
    }
}

class Email extends Email_Smtp 
{
  // any more methods
}

$mail = new Email();
var_dump($mail);
$mail->testEmail_Smtp();      
$mail->testEmail_Driver();

您正在将辅助类分配给
$instance
,因此为了使代码正常工作,您需要使用该实例

<?php
    define('RT','<br />');
    
    class Email_Driver{
        public function testEmail_Driver(){
            echo "testEmail_Driver".RT;
        }
    }
        
    class Email_Smtp extends Email_Driver{
        public function testEmail_Smtp(){
           echo "testEmail_Smtp".RT;
        }
    }

    class Email{
      public $instance;
      public function __construct(){
          $this->instance = new Email_Smtp();
      }
    }


    $mail = new Email();

    printf('<pre>%s</pre>',print_r($mail,true));
    $mail->instance->testEmail_Smtp();      //Fatal error: Uncaught Error: Call to undefined method Email::testEmail_Smtp()
    $mail->instance->testEmail_Driver();

?>

您正在将辅助类分配给
$instance
,因此为了使代码正常工作,您需要使用该实例

<?php
    define('RT','<br />');
    
    class Email_Driver{
        public function testEmail_Driver(){
            echo "testEmail_Driver".RT;
        }
    }
        
    class Email_Smtp extends Email_Driver{
        public function testEmail_Smtp(){
           echo "testEmail_Smtp".RT;
        }
    }

    class Email{
      public $instance;
      public function __construct(){
          $this->instance = new Email_Smtp();
      }
    }


    $mail = new Email();

    printf('<pre>%s</pre>',print_r($mail,true));
    $mail->instance->testEmail_Smtp();      //Fatal error: Uncaught Error: Call to undefined method Email::testEmail_Smtp()
    $mail->instance->testEmail_Driver();

?>

对不起,这不是我的解决办法。我缩短了上课时间。行$this->instance=newemail_Smtp();将是动态的,所以我不能简单地扩展我的类。@hamburger好的,我理解。我必须按照你在问题中给出的答案来做。很抱歉,这不是我的解决方案。我缩短了上课时间。行$this->instance=newemail_Smtp();将是动态的,所以我不能简单地扩展我的类。@hamburger好的,我理解。我必须使用你在问题中给出的内容。在这个例子中,我不会使用通用名称
instance
。smtp怎么样?好的,我明白了。我还可以直接发送一封新电子邮件吗;在我的Email类中?我不会在这个实例中使用泛型名称
实例
。smtp怎么样?好的,我明白了。我还可以直接发送一封新电子邮件吗;在我的电子邮件课上?