Zend Framework mit Doctrine automatisch installieren
Eine der ausgereiftesten Datenbankabstraktionsschichten für PHP ist mit Doctrine entstanden. Wenn Sie also auf der Suche nach einem ORM sind, das über den Funktionsumfang von Zend_Db hinausgeht, sollten Sie sich ein kleines Testprojekt anlegen, um Doctrine einmal zu testen. Im schlimmsten Fall kommen Sie zu der Erkenntnis, dass es sich auf für Sie lohnen könnte das Zend Framework zusammen mit dem Doctrine ORM einzusetzen.
Mit dem folgenden Bash Script lassen sich die jeweils aktuelle Releases des Zend Framework, als auch des Doctrine ORM automatisiert herunterladen, sowie eine aktuelle Projektstruktur erstellen.
Vorgehensweise
Wechseln Sie in das Verzeichnis Ihrer Webprojekte.
#Beispiel: cd /var/www/ mkdir zenddoctrine cd zenddoctrine
Laden Sie sich das Skript herunter.
wget http://downloads.libatech.biz/zend_doctrine
Passen Sie die Datenbankdaten Ihren Gegebenheiten an.
Machen Sie das Skript ausführbar.
chmod +x zend_doctrine
Führen Sie das Skript aus.
./zend_doctrine
Nun haben Sie eine komplette Projektstruktur, um mit dem Zend Framework in Verbindung mit dem ORM Doctrine arbeiten zu können.
Beachten Sie, dass Sie, als auch der Benutzer unter dem Ihr Webserver läuft, die nötigen Rechte auf das Directory besitzen muss. Passen Sie daher die Rechte entsprechend an.
#Beispiel - Webserver läuft unter www-data und Sie sind Mitglied der Gruppe www-data: sudo chown -R www-data:www-data /var/www/zenddoctrine/ sudo chmod -R g+w /var/www/zenddoctrine/
#!/bin/bash ################################# # Zend mit ORM Doctrine installieren # und einrichten # # Author: R. Gemander (Libatech) # Web: http://www.libatech.biz # License: GPL ################################# #Datenbankdaten anpassen DBUSER="dbuser" DBPASSWORD="dbpassword" DBNAME="dbname" DBHOST="localhost" ################################# # Downloadlinks, Filenames and Foldernames ZENDFRAMEWORKRELEASE="1.10.2" ZENDFRAMEWORKFOLDER="ZendFramework-$ZENDFRAMEWORKRELEASE-minimal" ZENDFRAMEWORK="$ZENDFRAMEWORKFOLDER.zip" DOCTRINETAR="Doctrine-1.2.1.tgz" DOCTRINETARFOLDER="Doctrine-1.2.1" ZENDFRAMEWORKLINK="http://framework.zend.com/releases/ZendFramework-$ZENDFRAMEWORKRELEASE/$ZENDFRAMEWORK" DOCTRINELINK="http://www.doctrine-project.org/download/1_2_1/format/tgz/package/" ################################# #first build a Basic Folder Structure APPDIR="application" CONFDIR="$APPDIR/config" CONTRDIR="$APPDIR/controllers" DOCTRINEDIR="$APPDIR/doctrine" DATADIR="$DOCTRINEDIR/data" FIXURESDIR="$DOCTRINEDIR/fixtures" SQLDIR="$DOCTRINEDIR/sql" MIGRATIONSDIR="$DOCTRINEDIR/migrations" SCHEMADIR="$DOCTRINEDIR/schema" MODELSDIR="$APPDIR/models" VIEWSDIR="$APPDIR/views" SCRIPTSDIR="$VIEWSDIR/scripts" LIBDIR="library" DOCTRINEDIR="$LIBDIR/doctrine" ZENDDIR="$LIBDIR/zendframework" PUBDIR="public" CLIDIR="scripts" ############################### #Binarys MKDIR="$(which mkdir)" WGET="$(which wget)" UNZIP="$(which unzip)" TAR="$(which tar)" # check binarys for i in $MKDIR $WGET $UNZIP $TAR do if ! type $i >/dev/null 2>&1 then echo -e "FEHLER: Das Programm $i wurde nicht gefunden. Installieren Sie das Programm $i. Breche ab!" exit fi done ############################### #internals ZEND="Zend" DOCTRINE="Doctrine" WORKINGDIR="`pwd`" ############################### #create Folder Structure for FOLDER in $APPDIR $CONFDIR $CONTRDIR $DOCTRINEDIR $DATADIR $FIXURESDIR $SQLDIR $MIGRATIONSDIR $SCHEMADIR $MODELSDIR $VIEWSDIR $SCRIPTSDIR $LIBDIR $DOCTRINEDIR $ZENDDIR $PUBDIR $CLIDIR do echo -n "Create Folder $FOLDER" $MKDIR -p $FOLDER echo ".....done" done ############################### #get Zend Framework echo "get Zend Framework" cd $ZENDDIR $WGET $ZENDFRAMEWORKLINK echo -n "Unzip $ZENDFRAMEWORK ... " $UNZIP $ZENDFRAMEWORK echo "done, delete $ZENDFRAMEWORK" rm $ZENDFRAMEWORK #echo "rename $ZENDFRAMEWORKFOLDER to $ZEND" echo "get needed Zend Files" cp -R "$ZENDFRAMEWORKFOLDER/library/Zend/" $ZEND rm -R $ZENDFRAMEWORKFOLDER cd "../.." clear ############################### #get Doctrine echo "get Doctrine ORM" cd $DOCTRINEDIR wget $DOCTRINELINK echo "Unpack $DOCTRINETAR" tar xzf $DOCTRINETAR echo "done, delete $DOCTRINETAR" rm $DOCTRINETAR #echo "rename $DOCTRINETARFOLDER to $DOCTRINE" #mv $DOCTRINETARFOLDER $DOCTRINE echo "get needed Doctrine Files" cp -R "$DOCTRINETARFOLDER/lib/Doctrine/" $DOCTRINE cp -R "$DOCTRINETARFOLDER/lib/vendor/" "vendor" cp "$DOCTRINETARFOLDER/lib/Doctrine.php" "Doctrine.php" rm -R $DOCTRINETARFOLDER rm "package.xml" cd "../.." clear ################################ #Building application INDEXFILE="$PUBDIR/index.php"; echo -n "Create $INDEXFILE" touch $INDEXFILE echo "<?php" >>$INDEXFILE echo "require '../application/bootstrap.php';" >>$INDEXFILE echo "?>" >>$INDEXFILE echo "... done" HTFILE="$PUBDIR/.htaccess" echo -n "Create $HTFILE" touch $HTFILE echo 'RewriteEngine on' >>$HTFILE echo 'RewriteCond %{SCRIPT_FILENAME} !-f' >>$HTFILE echo 'RewriteRule ^(.*)$ index.php/$1' >>$HTFILE echo "... done" GLOBALFILE="$APPDIR/global.php" echo -n "Creating $GLOBALFILE" touch $GLOBALFILE echo "<?php " >>$GLOBALFILE echo "error_reporting(E_ALL | E_STRICT); " >>$GLOBALFILE echo "ini_set('display_startup_errors', 1); " >>$GLOBALFILE echo "ini_set('display_errors', 1); " >>$GLOBALFILE echo "date_default_timezone_set('Europe/Berlin'); " >>$GLOBALFILE echo -e "\n/* " >>$GLOBALFILE echo " * Setup libraries & autoloaders " >>$GLOBALFILE echo " */ " >>$GLOBALFILE echo -e "\nset_include_path('$WORKINGDIR/$ZENDDIR' " >>$GLOBALFILE echo -e "\t\t. PATH_SEPARATOR . '$WORKINGDIR/$DOCTRINEDIR' " >>$GLOBALFILE echo -e "\t\t. PATH_SEPARATOR . '$WORKINGDIR/$DOCTRINEDIR/vendor/sfYaml' " >>$GLOBALFILE echo -e "\t\t. PATH_SEPARATOR . dirname(__FILE__).'/models' " >>$GLOBALFILE echo -e "\t\t. PATH_SEPARATOR . dirname(__FILE__).'/models/generated' " >>$GLOBALFILE echo -e "\t\t. PATH_SEPARATOR . get_include_path()); " >>$GLOBALFILE echo "require_once 'Zend/Loader/Autoloader.php'; " >>$GLOBALFILE echo '$loader = Zend_Loader_Autoloader::getInstance(); ' >>$GLOBALFILE echo '$loader->setFallbackAutoloader(true);' >>$GLOBALFILE echo -e "\n/* " >>$GLOBALFILE echo " * Set super-global data " >>$GLOBALFILE echo " */ " >>$GLOBALFILE ="benutzer" echo -e "\nDoctrine_Manager::connection('mysql://$DBUSER:$DBPASSWORD@$DBHOST/$DBNAME'); " >>$GLOBALFILE echo -e "\n/* " >>$GLOBALFILE echo " * Configure Doctrine " >>$GLOBALFILE echo " */ " >>$GLOBALFILE echo -e "\nZend_Registry::set('doctrine_config', array( " >>$GLOBALFILE echo -e "\t\t'data_fixtures_path' => dirname(__FILE__).'/doctrine/data/fixtures', " >>$GLOBALFILE echo -e "\t\t'models_path' => dirname(__FILE__).'/models', " >>$GLOBALFILE echo -e "\t\t'migrations_path' => dirname(__FILE__).'/doctrine/migrations', " >>$GLOBALFILE echo -e "\t\t'sql_path' => dirname(__FILE__).'/doctrine/data/sql', " >>$GLOBALFILE echo -e "\t\t'yaml_schema_path' => dirname(__FILE__).'/doctrine/schema' " >>$GLOBALFILE echo ")); " >>$GLOBALFILE echo "... done" BOOTSTRAP="$APPDIR/bootstrap.php" echo -n "Creating $BOOTSTRAP" touch $BOOTSTRAP echo "<?php" >>$BOOTSTRAP echo "require dirname(__FILE__).'/global.php';" >>$BOOTSTRAP echo "Zend_Controller_Front::run(dirname(__FILE__).'/controllers');" >>$BOOTSTRAP echo "?>" >>$BOOTSTRAP echo "... done" CLIFILE="$CLIDIR/doctrine-cli" echo -n "Creating $CLIFILE" echo "#!/usr/bin/env php" >>$CLIFILE echo "<?php" >>$CLIFILE echo "require dirname(__FILE__).'/../application/global.php';" >>$CLIFILE echo '$cli = new Doctrine_Cli(Zend_Registry::get("doctrine_config"));' >>$CLIFILE echo '$cli->run($_SERVER["argv"]);' >>$CLIFILE chmod +x $CLIFILE echo "... done" clear mkdir "application/views/scripts/index" echo 'All Done - you are ready to go.'
Es wurden noch keine Kommentare zu diesem Script hinterlegt


