Über Kettenaufrufe in PHP
天蓬老师
天蓬老师 2017-06-19 09:07:08
0
2
823

Bei der Verwendung von PHP-Kettenaufrufen ist ein Problem aufgetreten:
Es gibt unten eine Klasse „Site“:

<?php
class Site{
public function api(){
require('class.Api.php');
$this->api = new Api();
return $this->api;
}
}
?>

Es gibt auch eine Klasse „Api“ in „class.Api.php“:

<?php
class Api{
public function auth(){
//quiet a few
}
public function render(){
//quiet a few
}
}
?>

Instanziieren Sie mit dem folgenden Code:

$site = new Site();

Rufen Sie den folgenden Code erneut auf:

$site->api()->auth();
$site->api()->render();

Wird PHP require() wiederholen und eine neue Objekt-API erstellen? Wenn ja, kann require() durch require_once() ersetzt werden, aber wie kann man dafür sorgen, dass „$site->api()“ dasselbe Objekt zurückgibt? Danke!

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

Antworte allen(2)
为情所困

单例模式。

<?php
class Site{
    
    public function api(){
        if (!isset($this->api)) {
            $this->api = new Api();
        }
        return $this->api;
    }
}
?>

只是简单写写,还需要很多优化。

typecho
require('class.Api.php');
class Site{
    protected $api;
    
    public function getApi()
    {
        return $this->api;
    }
    
    public function api(){
        $this->api = new Api();
    }
}
?>
$site = new Site();
$site->api();
$site->getApi()->auth();
$site->getApi()->render();
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage