Ich bin neu mit diesem Namensraum Sache.PHP-Klasse nicht bei der Verwendung von Namespace
Ich habe 2 Klassen (separate Dateien) in meinem Basisverzeichnis, sagen class1.php
und class2.php
in einem Verzeichnis src/
.
class1.php
namespace \src\utility\Timer;
class Timer{
public static function somefunction(){
}
}
class2.php
namespace \src\utility\Verification;
use Timer;
class Verification{
Timer::somefunction();
}
Wenn ich class2.php
ausführen, bekomme ich die Fatal error dass
PHP Fatal error: Class 'Timer' not found in path/to/class2.php at line ***
ich irgendwo auf gelesen DAMIT , dass ich dafür Autoloader erstellen muss. Wenn ja, wie gehe ich in die Erstellung ein, und wenn nicht, was ist dann das Problem?
UPDATE
habe ich eine Autoloader das wird require
alle benötigten Dateien auf meinem PHP-Skript. So, jetzt würde die class2.php so enden.
namespace \src\utility\Verification;
require '/path/to/class1.php'
use Timer;
//or use src\utility\Timer ... both doesn't work.
class Verification{
Timer::somefunction();
}
Dies funktioniert auch nicht, und es zeigt, dass die Klasse nicht gefunden wurde. Aber, wenn ich alle namespaces
und use
's entferne. Alles funktioniert gut.
Versuchen Sie in Ihrer class2.php mit Verwendung \ src \ Timer \ Timer als Timer; –
@ManinderpreetSingh versucht. Gleicher Fehler. –
Ich denke, dass Sie [Komponist] (http://getcomposer.org) überprüfen sollten. Ein Namespace ist lediglich ein eindeutiger Bezeichner für eine Klasse. PHPs Autoload ist überladen, wenn eine Klasse instanziiert wird, während sie nicht existiert, aber bevor der Vorprozessor einen T_FATAL-Fehler auslöst. Es ist üblich, '' 'durch'/'zu ersetzen und aus einer Ordnerstruktur zu laden (warum der Namespace normalerweise mit einer Verzeichnisstruktur übereinstimmt. – ash