À propos des appels en chaîne en PHP
天蓬老师
天蓬老师 2017-06-19 09:07:08
0
2
854

J'ai rencontré un problème lors de l'utilisation des appels en chaîne PHP :
Il y a une classe "Site" ci-dessous :

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

Il existe également une classe "Api" située dans "class.Api.php" :

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

Instanciez avec le code suivant :

$site = new Site();

Appelez à nouveau le code suivant :

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

PHP répétera-t-il require() et créera-t-il une nouvelle API d'objet ? Si tel est le cas, require() peut être remplacé par require_once(), mais comment faire en sorte que "$site->api()" renvoie le même objet ? Merci!

天蓬老师
天蓬老师

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

répondre à tous(2)
为情所困

Mode cas unique.

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

C'est juste une écriture simple, mais elle nécessite encore beaucoup d'optimisation.

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();
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal