Guten tag
ich hab mir ein Projekt aufgebaut und wollte nun mit Zend Framework etwas testen(damit werde ich mein nächstes Projekt aufbauen) Nun habe ich aber Probleme damit diesen in mein schon existierenden Autoloader einzubauen so das ich die Funktionen nicht finde.
so sieht mein Autoloader jetzt aus
bedenkt bitte meine Kenntnisse sind warscheinlich noch im anfänger Niveau.
So nun seht ihr ja die var_dumps da wird mir ausgegeben das er, wenn er die function Zend_Mail() sucht, sie im data/ Ordner sucht. Das heißt das der Zend loader überhaupt nicht greift. Ich dachte zuerst das das require_once reichen würde, weil wenn ich im Storm strg+ linksklick auf die Function Zend_Mail mache findet er die ohne Probleme. Ich hab auch schon viel über google und Zend selbst gelesen aber nicht das Richtige gefunden (also z.b habe ich keine php.ini in die ich was eintragen kann und 2. bringt mir auch inlucde_path= path/to/Zend nichts.)
Ich denke ich muss da noch mehr in meinem Autoloader eintragen damit Zend eingebunden wird aber ich bin mir nicht sicher was genau.
Falls noch irgendwas benötigt wird sagt bitte bescheid.
EDIT:
mein neuer Code
nun komm ich zwar weiter jedoch kommen diese fehler meldungen
( ! ) Fatal error: require_once() [<a href='function.require'>function.require</a>]: Failed opening required 'Zend/Exception.php' (include_path='.:/usr/share/php:/usr/share/pear') in /path/to/file/upload/data/Zend/Loader.php on line 98
Call Stack
# Time Memory Function Location
1 0.0004 664408 {main}( ) ../index.php:0
2 0.0037 1051608 Uploader->__construct( ) ../index.php:43
3 0.0086 1299856 Uploader->_checkUploadedFile( ) ../uploader.class.php:54
4 0.0709 1323688 StatistikMailto->SendMail( ) ../uploader.class.php:211
5 0.0709 1324024 __autoload( ) ../uploader.class.php:138
6 0.0709 1324024 Zend_Loader_Autoloader::autoload( ) ../index.php:17
7 0.0709 1324536 call_user_func ( ) ../Autoloader.php:125
8 0.0709 1324592 Zend_Loader_Autoloader->_autoload( ) ../Autoloader.php:125
9 0.0709 1324672 call_user_func ( ) ../Autoloader.php:473
10 0.0709 1324728 Zend_Loader::loadClass( ) ../Autoloader.php:473
---
Warning: require_once(Zend/Exception.php) [<a href='function.require-once'>function.require-once</a>]: failed to open stream: No such file or directory in /path/to/file/upload/data/Zend/Loader.php on line 98
----
Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening 'Zend/Mail.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /path/to/file/upload/data/Zend/Loader.php on line 146
----
Warning: include_once(Zend/Mail.php) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /path/to/file/upload/data/Zend/Loader.php on line 146
Ich denke das problem ist das die includes nicht gefunden werden. ich musste im autoloader.php das include anpassen damit die seite erst ausgegeben wird und da liegt glaub ich das problem das bei jedem include die phps nicht gefunden werden
vorher require_once 'Zend/Loader.php'; (damit geht es nicht)
und nachher require_once dirname(__DIR__) . '/Loader.php'; (damit komm ich zu den include warnings)
also wie änder ich das der bei jedem require_once auch im zend sucht(aber wenn ich das mache was wird aus denn recuire_once die ich inmeiner php habe?da soll ja nicht im Zend gesucht werden
ich hab mir ein Projekt aufgebaut und wollte nun mit Zend Framework etwas testen(damit werde ich mein nächstes Projekt aufbauen) Nun habe ich aber Probleme damit diesen in mein schon existierenden Autoloader einzubauen so das ich die Funktionen nicht finde.
so sieht mein Autoloader jetzt aus
PHP-Code:
function __autoload($sClassName)
{
/**
* Autoloader fuer Klassen die im Ordner data/ sind und mit .class.php enden. falls nicht vorhanden wird
* der Script abgebrochen.
*/
require_once dirname(__DIR__) . '/upload/data/Zend/Loader/Autoloader.php';
if (!class_exists($sClassName)) {
var_dump($sClassName);
$sFileName = 'data/' . strtolower($sClassName) . '.class.php';
var_dump($sFileName);
if (file_exists(strtolower($sFileName))) {
var_dump($sFileName);
require_once $sFileName;
return true;
}
}
return true;
}
So nun seht ihr ja die var_dumps da wird mir ausgegeben das er, wenn er die function Zend_Mail() sucht, sie im data/ Ordner sucht. Das heißt das der Zend loader überhaupt nicht greift. Ich dachte zuerst das das require_once reichen würde, weil wenn ich im Storm strg+ linksklick auf die Function Zend_Mail mache findet er die ohne Probleme. Ich hab auch schon viel über google und Zend selbst gelesen aber nicht das Richtige gefunden (also z.b habe ich keine php.ini in die ich was eintragen kann und 2. bringt mir auch inlucde_path= path/to/Zend nichts.)
Ich denke ich muss da noch mehr in meinem Autoloader eintragen damit Zend eingebunden wird aber ich bin mir nicht sicher was genau.
Falls noch irgendwas benötigt wird sagt bitte bescheid.
EDIT:
mein neuer Code
PHP-Code:
require_once dirname(__DIR__) . '/upload/data/Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->autoload($sClassName);
if (!class_exists($sClassName)) {
var_dump($sClassName);
$sFileName = 'data/' . strtolower($sClassName) . '.class.php';
var_dump($sFileName);
if (file_exists(strtolower($sFileName))) {
var_dump($sFileName);
require_once $sFileName;
return true;
}
}
return true;
( ! ) Fatal error: require_once() [<a href='function.require'>function.require</a>]: Failed opening required 'Zend/Exception.php' (include_path='.:/usr/share/php:/usr/share/pear') in /path/to/file/upload/data/Zend/Loader.php on line 98
Call Stack
# Time Memory Function Location
1 0.0004 664408 {main}( ) ../index.php:0
2 0.0037 1051608 Uploader->__construct( ) ../index.php:43
3 0.0086 1299856 Uploader->_checkUploadedFile( ) ../uploader.class.php:54
4 0.0709 1323688 StatistikMailto->SendMail( ) ../uploader.class.php:211
5 0.0709 1324024 __autoload( ) ../uploader.class.php:138
6 0.0709 1324024 Zend_Loader_Autoloader::autoload( ) ../index.php:17
7 0.0709 1324536 call_user_func ( ) ../Autoloader.php:125
8 0.0709 1324592 Zend_Loader_Autoloader->_autoload( ) ../Autoloader.php:125
9 0.0709 1324672 call_user_func ( ) ../Autoloader.php:473
10 0.0709 1324728 Zend_Loader::loadClass( ) ../Autoloader.php:473
---
Warning: require_once(Zend/Exception.php) [<a href='function.require-once'>function.require-once</a>]: failed to open stream: No such file or directory in /path/to/file/upload/data/Zend/Loader.php on line 98
----
Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening 'Zend/Mail.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /path/to/file/upload/data/Zend/Loader.php on line 146
----
Warning: include_once(Zend/Mail.php) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /path/to/file/upload/data/Zend/Loader.php on line 146
Ich denke das problem ist das die includes nicht gefunden werden. ich musste im autoloader.php das include anpassen damit die seite erst ausgegeben wird und da liegt glaub ich das problem das bei jedem include die phps nicht gefunden werden
vorher require_once 'Zend/Loader.php'; (damit geht es nicht)
und nachher require_once dirname(__DIR__) . '/Loader.php'; (damit komm ich zu den include warnings)
also wie änder ich das der bei jedem require_once auch im zend sucht(aber wenn ich das mache was wird aus denn recuire_once die ich inmeiner php habe?da soll ja nicht im Zend gesucht werden
Kommentar