Comme cela?
<?php
namespace sample
{
class Sample_class_1
{
public function test_func_1($text)
{
echo $text;
}
}
class Sample_class_2
{
public static function test_func_2()
{
$c = new Sample_class_1();
$c->test_func_1("func 2<br />");
}
public static function test_func_3()
{
$c = new Sample_class_1();
$c->test_func_1("func 3<br />");
}
}
}
// Now entering the root namespace...
// (You only need to do this if you've already used a different
// namespace in the same file)
namespace
{
// Directly addressing a class
$c = new sample\Sample_class_1();
$c->test_func_1("Hello world<br />");
// Directly addressing a class's static methods
sample\Sample_class_2::test_func_2();
// Importing a class into the current namespace
use sample\Sample_class_2;
sample\Sample_class_2::test_func_3();
}
// Now entering yet another namespace
namespace sample2
{
// Directly addressing a class
$c = new sample\Sample_class_1();
$c->test_func_1("Hello world<br />");
// Directly addressing a class's static methods
sample\Sample_class_2::test_func_2();
// Importing a class into the current namespace
use sample\Sample_class_2;
sample\Sample_class_2::test_func_3();
}
Si vous êtes dans un autre fichier que vous n'avez pas besoin d'appeler namespace {
pour entrer dans l'espace de noms racine. Alors, imaginez le code est un autre fichier ci-dessous « ns2.php » alors que le code original était « ns1.php »:
// Include the other file
include("ns1.php");
// No "namespace" directive was used, so we're in the root namespace.
// Directly addressing a class
$c = new sample\Sample_class_1();
$c->test_func_1("Hello world<br />");
// Directly addressing a class's static methods
sample\Sample_class_2::test_func_2();
// Importing a class into the current namespace
use sample\Sample_class_2;
sample\Sample_class_2::test_func_3();
Okai, donc je besoin d'utiliser « espace de noms » avant l'utilisation des éléments dans l'espace de noms? – ParisNakitaKejser
je demande car je veux l'appel d'espace de noms indsite une classe que j'ai maintenant quand j'ai besoin d'utiliser cet espace de noms comme un fremawork, :) – ParisNakitaKejser
La façon dont cela fonctionne est, chaque classe (et fonction, et variable) vit dans un espace de noms. Si vous n'utilisez pas le mot clé "namespace", il suppose que vous êtes dans l'espace de noms racine. Si vous souhaitez utiliser des éléments d'un espace de noms différent (par exemple une classe de "sample" lorsque vous êtes dans "sample_2" ou dans la racine) vous devez soit l'adresser par son nom complet (par exemple 'sample \ Sample_class_1') ou l'importer dans votre espace de noms actuel (en utilisant 'use 'sample \ Sample_class_1"; ') –