Wie verwende ich Symfony-Befehle zum Erstellen von Projekten? In diesem Artikel wird hauptsächlich die Methode zur Verwendung des Symfony-Befehls zum Erstellen eines Projekts vorgestellt und die Verwendung des Symfony-Befehls und die damit verbundenen Fähigkeiten zur Projekterstellung anhand von Beispielen analysiert. Ich hoffe, es hilft allen.
Das Beispiel in diesem Artikel beschreibt, wie Sie mit dem Symfony-Befehl ein Projekt erstellen. Geben Sie es wie folgt als Referenz an alle weiter:
Übersicht
Dieses Kapitel beschreibt den sinnvollen strukturellen Rahmen eines Symfony-Projekts und verwendet den Symfony-Befehl zum Initialisieren Projektstruktur.
Einführung
In Symfony ist ein Projekt eine Reihe von Diensten und effektiven Vorgängen unter einem bestimmten Domänennamen, die dasselbe Projektmodell teilen.
In einem Projekt sind die Vorgänge in der Anwendung eine Reihe von Logiken; jede Anwendung kann normal und unabhängig ausgeführt werden, ohne andere Anwendungen im selben Projekt zu beeinträchtigen.
In den meisten Fällen enthält ein Projekt zwei Anwendungen, eine für die Vordergrundanzeige und eine für die Hintergrundverarbeitung, die dieselbe Datenbank verwenden. Natürlich können Sie auch viele kleine Sites in ein Projekt einbinden, wobei jede Site eine andere Anwendung darstellt. Beachten Sie, dass Hyperlinks, die zwischen verschiedenen Anwendungen verwendet werden, absolute Pfade verwenden müssen.
Jede Anwendung besteht aus einer Reihe von Modulen, und jedes Modul ist für eine spezielle Funktion verantwortlich. Ein Modul verwendet normalerweise eine Seite oder eine Gruppe von Seiten für ähnliche Funktionen. Module können beispielsweise „Startseite“, „Artikel“, „Hilfe“, „Einkaufswagen“, „Konto“ usw. sein.
Funktion der Module: Jedes Modul hat seine eigenen Funktionen, zum Beispiel muss das Modul „shoppingCart“ (Warenkorb) über die Funktionen „Hinzufügen“, „Anzeigen“ und „Aktualisieren“ verfügen. Funktionsverhalten kann man sich als Seitenverhalten in einer typischen Webanwendung vorstellen.
Wenn ein neues Projekt zu viele Ebenen hat, ist es einfach, alle Funktionen im Modul zu gruppieren, sodass die Dateistruktur einfach gehalten werden kann. Wenn die Anwendung komplexer wird, kann die Funktionalität in logischen Modulen organisiert werden.
Jede Anwendung kann in unterschiedlichen Umgebungen laufen, zum Beispiel unterschiedlichen Konfigurationen oder Datenbanken. Im Allgemeinen wird jede neue Anwendung in drei Umgebungen ausgeführt (Entwicklung, Test und Endproduktion). Jede Anwendung kann bei Bedarf in mehreren Umgebungen ausgeführt werden und muss lediglich das Konfigurationszubehör in verschiedenen Umgebungen ändern.
Zum Beispiel muss eine Testumgebung Warnungen und Fehler protokollieren, während eine endgültige Produktionsumgebung nur Fehler protokollieren muss. Die Cache-Beschleunigung ist in Entwicklungsumgebungen normalerweise nicht aktiviert, muss jedoch in Test- und endgültigen Produktionsumgebungen aktiviert werden. Entwicklungs- und Testumgebungen erfordern möglicherweise die Speicherung von Testdaten in der Remote-Datenbank des Endprodukts. Alle Umgebungen können auf einem einzigen Computer koexistieren, und oft befindet sich nur die endgültige Produktionsumgebung auf dem Produktionsserver.
Hinweis: Wenn Sie Symfony über die Sandbox verwenden, müssen Sie kein Projekt oder keine Anwendung einrichten. Ein Projekt namens „sf_sandbox“ und eine Anwendung namens „frontend“. Sie müssen auch keinen Webserver einrichten, legen Sie Ihr Programm einfach im Verzeichnis web/root ab.
Pake
SymFony nutzt das Spezialtool Pake zur Verwaltung von Projekten, Anwendungen und Modulen. Pake ist ein PHP-Tool, das dem Rake-Befehl ähnelt (ein Tool, das den Make-Befehl in Ruby umwandelt). Es automatisiert einige Verwaltungsaufgaben basierend auf einer speziellen Konfigurationsdatei namens pakefile.php. Wenn Sie das Pake-Tool anstelle der Symfony-Befehlszeile verwenden, wird alles sehr einfach.
Um eine Liste aller gültigen Verwaltungsoperationsbefehle zu erhalten, geben Sie einfach in Ihr Projektverzeichnis ein:
$ symfony -T
CLI-Aufgabenplanung (Befehlszeilenoperation) für ein Projekt in den frühen Phasen. Eine vollständige Beschreibung der CLI-Aufgabenplanung finden Sie im CLI-Kapitel.
Projekteinstellungen
Bevor alles beginnt, müssen Sie ein neues Verzeichnis zum Speichern des Projekts erstellen:
$ mkdir /home/steve/myproject
Dann beginnen Sie mit der Initialisierung des Projekts Um Originaldateien und Verzeichnisse zu generieren, geben Sie einfach Folgendes ein:
$ cd /home/steve/myproject $ symfony init-project myproject
Dies ist eine Übersicht über die neu erstellte Dateisystem-Baumstruktur:
apps/
batch/
cache/
config/
data/
doc/
lib/
log/
test/
web/
symfony command can jederzeit im aktuellen Projektverzeichnis verfügbar sein.
App-Einstellungen
Das Projekt ist noch nicht abgeschlossen, es benötigt noch mindestens eine App. Verwenden Sie zunächst den Befehl symfony init-app, um eine Anwendung zu initialisieren, und verwenden Sie die Parameter nach dem Befehl, um die Anwendung zu benennen:
$ symfony init-app myapp
Auf diese Weise wird eine myapp im Ordner apps/ im Stammverzeichnis erstellt Verzeichnis des Projekts. Verzeichnis, das eine Standardanwendungskonfiguration und eine Reihe von Verzeichnisdateien für Ihre Site enthält:
apps/
myapp/
config/
i18n/
lib /
module/
templates/
Einige PHP-Dateien, die in ihren jeweiligen Standardumgebungen als Front-End-Controller fungieren, werden auch im Webverzeichnis des Projektstammverzeichnisses erstellt :
web/
index.php
myapp_dev.php
index.php是production新应用程序的前端控制器。因为你创建这个项目中的第一个应用程序时,Symfony创建了一个调用 index.php的文件,例如 myapp.php (如果你现在添加一个名为 mynewapp 的新应用程序,新产品的前端控制器将被命名为mynewapp.php)。在 开发环境中运行程序时,调用前端控制器 myapp_dev.php。
注意:你如果仔细阅读了介绍,你可能会对myapp_test.php文件的位置感到意外。事实上,测试 环境是用于对你的应用程序的构件进行单元测试,它不需要前端控制器。可以参考单元测试章节去了解更多详细内容。
从现在开始,/home/steve/myproject/ 目录将会作为项目的根目录。根目录的路径已经被保存为 SF_ROOT_DIR 常量,定义在 index.php 文件中,并且我们将会用这个常量名代替实际路径以避免把不叫Steve的读者搞糊涂了(译者注:因为作者将项目放在/home/steve /myprojetc的目录下,这个路径每个人可能都不尽相同,所以使用常量SF_ROOT_DIR来代替了实际路径)。
Web服务器设置
为了访问和测试新的应用程序,需要配置web服务器。这有一个Apache的例子,在 httpd.conf 配置文件中加入一个新的虚拟主机:
<Directory "/$data_dir/symfony/web/sf"> AllowOverride All Allow from All </Directory> <VirtualHost *:80> ServerName myapp.example.com DocumentRoot "/home/steve/myproject/web" DirectoryIndex index.php Alias /sf /$data_dir/symfony/web/sf <Directory "/home/steve/myproject/web"> AllowOverride All Allow from All </Directory> </VirtualHost>
注意:上面的配置中的 $data_dir 变量需要替换成你的PEAR库目录。例如:在*nix系统中,你可以输入:
<code> Alias /sf /usr/local/lib/php/data/symfony/web/sf</code>
重启Apache服务之后,就可以看到调用新创建的应用程序的页面,只需要在一个标准的web浏览器的地址栏输入下列路径:
http://myapp.example.com/index.php/
或者,在调试模式下使用这个路径:
http://myapp.example.com/myapp_dev.php/
注意:Symfony显示‘简短漂亮的(smart)'路径时用到了 mod_rewrite 模块。如果你的Apache版本没有将 mod_rewrite 模块编译进去,那么需要在 httpd.conf 中检查模块mod_rewrite是否是动态模块方式(DSO)安装的,并且确认是否已经打开(译者注:关于Apache的mod_rewrite模块安 装和使用方法请参考Apache相关文档,这里假设读者已经具备这方面知识而不作过多说明):
AddModule mod_rewrite.c LoadModule rewrite_module modules/mod_rewrite.so
模块设置
你这个新的应用程序并不出众,它缺乏吸引人的功能。如果你想增加功能性,你需要在在其中用到模块。这里再一次用到了 symfony 命令,参数为 init-module ,后面跟着应用程序名称和新模块的名称:
$ symfony init-module myapp mymodule
创建以后的树结构如下:
modules/
mymodule/
actions/
config/
lib/
templates/
validate/
新模块直接可以被使用:
http://myapp.example.com/index.php/mymodule
然后你需要让它正常的工作,编辑文件 myapp/modules/mymodule/templates/indexSuccess.php 输入:
Hello, world !
保存它,刷新刚才的页面就可以看到内容!
源文件版本控制(Source versioning)
应用程序设置完成之后,建议开始进行源文件版本控制。Symfony从一开始就支持CVS(译者注:版本控制系统),建议使用Subversion(译者注:一个版本控制系统软件,采用CVS 的运作模型, 并以取代CVS 为目标)。下面的例子列出了一些Subversion的命令,用于从在一个安装了Subversion的服务器上创建一个新项目的"仓库"(译者注:repository,源代码储存的地方)。对于Windows用户,建议客户端使用TortoiseSVN。关于源文件版本控制的更多信息和命令用法,请参考Subversion文档。
下面的例子假设$SVNREP_DIR是一个已经定义的环境变量。如果你还没有定义它,你需要用"仓库"的实际路径代替$SVNREP_DIR变量。
现在让我们开始创建myproject项目的新"仓库":
$ svnadmin create $SVNREP_DIR/myproject
然后用下面这串命令创建新"仓库"的基本组织结构(规划),其中包含 trunk, tags 和 branches 三个目录:
[code]$ svn mkdir -m "layout creation" file:///$SVNREP_DIR/myproject/trunk file:///$SVNREP_DIR/myproject/tags file:///$SVNREP_DIR/myproject/branches[/code]
这将是你第一个版本。现在你必须导入项目的文件,但不包括缓存和日志等临时文件:
$ cd /home/steve/myproject $ rm -rf cache/* $ rm -rf log/* $ svn import -m "initial import" . file:///$SVNREP_DIR/myproject/trunk
检查提交的文件:
$ svn ls file:///$SVNREP_DIR/myproject/trunk/
看上去很不错。现在SVN"仓库"已经记录了所有项目文件的版本(和更改历史)。就是说实际路径为 /home/steve/myproject 的目录中所有的文件都已经被"仓库"记录。要做到这一点,首先重命名 myproject 目录名,当一切运行正常的时候可以删除它,并且在新目录中向"仓库"提交一个checkout:
$ cd /home/steve $ mv myproject myproject.origin $ svn co file:///$SVNREP_DIR/myproject/trunk myproject $ ls myproject
现在你可以在 /home/steve/myproject/ 目录下的文件中工作,并且提交修改到"仓库"中。不要忘记作一些清理和删除myproject.origin目录,它现在没有用了。
还有一些另外的设置。当你向"仓库"中提交工作目录时,会复制一些多余的文件,像项目中 cache 和 log 目录下的文件。因此你需要针对这个项目在svn中指定一个忽略列表。你也需要重新将 cache/ 和 log/ 目录的权限设置为完全控制,在访问时产生的文件SVN将不会储存:
$ cd /home/steve/myproject $ svn propedit svn:ignore . $ chmod 777 cache $ chmod 777 log
这将调用在SVN中设置的默认的文本编辑器。如果没有生效,就像下面这样设置subversion首选的编辑器:
$ export SVN_EDITOR=<name of editor> $ svn propedit svn:ignore .
直接在SVN中的忽略列表中加入myproject子目录,这样提交的时候就忽略了:
cache log
保存然后退出,这样就完成了。
相关推荐:
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie Symfony Befehle zum Erstellen von Projekten verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!