Hoe doe je dat? Uw bron van computerkennis

Jouw library toevoegen in het Zend Framework

Het Zend Framework is super uitgebreid qua framework. Maar soms heb je gewoon nood aan eigen classes of uitbreidingen op classes van het Zend Framework. Eén van de meest nette oplossingen om dit te kunnen, is alles in een eigen map in de “library”-map te zetten. Standaard heb je in de map “library” al de map “Zend” waarin eigenlijk alle classes van het Zend Framework zich bevinden. Je maakt dan gewoon een eigen map aan in “library”. Ik prefereer de naam “My” maar het kan werkelijk alles zijn wat je wil (zolang het maar alfanumerieke tekens zijn). Heb je dan bijvoorbeeld een class “User” dan zet je die in het bestand “User.php” in de map “My” en noem je de class “My_User”. Als je een beetje gewend bent met het Zend Framework, begrijp je dit wel. Het probleem echter, is dat het Zend Framework die class niet zal vinden, tenzij je een kleine regel toevoegt in je configuratie-bestanden.



Mijn configuratiebestand ziet er zo uit:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH “/../library”
bootstrap.path = APPLICATION_PATH “/Bootstrap.php”
bootstrap.class = “Bootstrap”
resources.frontController.controllerDirectory = APPLICATION_PATH “/controllers”
resources.layout.layoutPath = APPLICATION_PATH “/layouts/scripts”
resources.view[] =
resources.view.helperPath.My_View_Helper = APPLICATION_PATH “/views/helpers”

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

Dat van jou zal er waarschijnlijk ook zo uitzien. Je moet gewoon 1 regel toevoegen, namelijk:

autoloadernamespaces.my = “My_”

Hierdoor vertel je aan het Zend Framework dat hij all classes die beginnen met “My_” ook moet includen. Als je jouw map in de library liever “Project” noemt, dan moet je in plaats van “My_”, “Project_” typen in je configuratiebestand. Ik gebruik nu eenmaal liever “My_” waardoor mijn configuratiebestand er ongeveer zo uitziet:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH “/../library”
bootstrap.path = APPLICATION_PATH “/Bootstrap.php”
bootstrap.class = “Bootstrap”
resources.frontController.controllerDirectory = APPLICATION_PATH “/controllers”
resources.layout.layoutPath = APPLICATION_PATH “/layouts/scripts”
resources.view[] =
resources.view.helperPath.My_View_Helper = APPLICATION_PATH “/views/helpers”
autoloadernamespaces.my = “My_”

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

En mijn mappenstructuur ziet er zo uit:

./application
    ./controllers
    ./models
    ....
./library
    ./Zend
    ./My
./public
...

Gerelateerde artikels

Mijn reactie

Categorie

RSS Laptop nieuws