Ich habe folgende Struktur, wie man Symfony Class Loader verwenden
api
gemeinsamen
Config
docs
Skripte
Anbieter
Ich habe benutzerdefinierte Autoloader unter common/php/autoload.php die
<?php
require_once BASE_DIR . 'vendor/autoload.php';
require_once BASE_DIR . 'vendor/symfony/class-loader/ClassLoader.php';
use Symfony\ClassLoader\ClassLoader;
$loader = new \ClassLoader();
// to enable searching the include path (eg. for PEAR packages)
$loader->setUseIncludePath(true);
// ... register namespaces and prefixes here - see below
$loader->register();
// register a single namespaces
$loader->addPrefix('CCP', BASE_DIR . 'common/ccp/');
// cache files locations
require_once BASE_DIR . 'vendor/symfony/class-loader/ApcClassLoader.php';
// sha1(__FILE__) generates an APC namespace prefix
$cachedLoader = new ApcClassLoader(sha1(__FILE__), $loader);
// register the cached class loader
$cachedLoader->register();
// deactivate the original, non-cached loader if it was registered previously
$loader->unregister();
enthält Wie Sie Komponist stellt alles unter ROOTDIR/Kreditoren Ordner kann wissen.
Error I get is Fatal error: Uncaught Error: Class 'ClassLoader' not found in ROOTDIR/common/php/autoload.php:7
UPDATE
Wenn ich versuche, meine eigene Klasse unter gemeinsamer zu laden/ccp es wird nicht geladen.
Fatal error: Uncaught Error: Class 'CCP\Notification' not found in ROOTDIR/scripts/cli-test-email.php:12
Inhalt der Klasse
<?php
namespace CCP
class Notification{
...
}
UPDATE 2
Meine Skripte ist unter script
Ordner. Wenn ich den use
hinzufüge, tut es kein Fehler, aber nichts geschieht in Bezug auf Echo oder irgendwelche Fehler. Wenn ich das use
entferne, findet es die Klasse Notification
nicht.
#!/opt/SP/php-7.0.10/bin/php -q
<?php
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(E_ALL|E_STRICT);
echo "before use";
use CCP/Notification;
echo "after use";
$notification = new Notification();
print_r($notification);
$notification->emailTest();
'$ loader = new Symfony \ Komponente \ ClassLoader \ ClassLoader' – Federkun
Warum muss ich' Symfony \ Component \ ClassLoader \ 'einschließen? – shorif2000
Dinge, die Sie vielleicht nachschlagen möchten: wie Namespaces funktioniert und was ist psr-0/4 – Federkun