Non, vous ne pouvez pas importer une classe avec l'option use
mot-clé. Vous devez utiliser include
/ require
déclaration. Même si vous utilisez un chargeur automatique PHP, celui-ci devra toujours utiliser l'une ou l'autre des options suivantes include
ou require
en interne.
L'objectif de la utiliser mot-clé :
Considérez le cas où vous avez deux classes avec le même nom ; vous trouverez cela étrange, mais lorsque vous travaillez avec une grande structure MVC, cela arrive. Si vous avez deux classes portant le même nom, placez-les dans des espaces de noms différents. Maintenant, considérez le moment où votre chargeur automatique charge les deux classes (fait par require
), et vous êtes sur le point d'utiliser un objet de la classe. Dans ce cas, le compilateur ne saura pas quel objet de classe charger parmi les deux. Pour aider le compilateur à prendre une décision, vous pouvez utiliser la méthode use
afin qu'il puisse décider de l'utilisation de l'un d'entre eux.
Aujourd'hui, les principaux cadres utilisent include
ou require
via composer
et psr
1) compositeur
2) PSR-4 autochargeur
Les passer en revue peut vous aider davantage. Vous pouvez également utiliser un alias pour vous adresser à une classe précise. Supposons que vous ayez deux classes portant le même nom, par exemple Mailer
avec deux espaces de noms différents :
namespace SMTP;
class Mailer{}
y
namespace Mailgun;
class Mailer{}
Et si vous souhaitez utiliser les deux classes Mailer en même temps, vous pouvez utiliser un alias.
use SMTP\Mailer as SMTPMailer;
use Mailgun\Mailer as MailgunMailer;
Plus tard dans votre code, si vous souhaitez accéder à ces objets de classe, vous pouvez procéder comme suit :
$smtp_mailer = new SMTPMailer;
$mailgun_mailer = new MailgunMailer;
Elle fera référence à la classe d'origine.
D'aucuns pourraient penser que s'il n'y a pas de noms de classes similaires, il n'y a pas lieu d'utiliser l'option use
mot-clé. Vous pouvez utiliser __autoload($class)
qui sera appelée automatiquement lorsque use
est exécutée avec la classe à utiliser comme argument, ce qui peut vous aider à charger la classe au moment de l'exécution, au fur et à mesure des besoins.
Se référer à ce document répondre pour en savoir plus sur l'autochargeur de classe.