Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Zend Framework einbinden

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Zend Framework einbinden

    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
    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;


    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
    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
    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


  • #2
    Ok habs zum laufen gebracht mit

    PHP-Code:
    $includePath = array();
    $includePath[] = '.';
    $includePath[] = './data';
    $includePath[] = get_include_path();
    $includePath implode(PATH_SEPARATOR,$includePath);
    set_include_path($includePath);

    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';
        
    $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;
            }
        } 
    nun hab ich zwar im mailer selbst ein problem noch aber das krieg ich schon hin

    Kommentar

    Lädt...
    X