ホームページ  >  記事  >  バックエンド開発  >  symfony がコマンドを使用してプロジェクトを作成する方法の詳細な説明

symfony がコマンドを使用してプロジェクトを作成する方法の詳細な説明

*文
*文オリジナル
2018-01-05 14:37:281755ブラウズ

symfony コマンドを使用してプロジェクトを作成するにはどうすればよいですか?この記事では主に symfony コマンドを使用してプロジェクトを作成する方法を紹介し、Symfony コマンドの使用法とプロジェクト作成の関連スキルをサンプルの形式で分析します。お役に立てれば幸いです。

この記事の例では、symfony コマンドを使用してプロジェクトを作成する方法を説明します。以下のように、参考としてみんなと共有してください:

概要

この章では、Symfony プロジェクトの合理的な構造フレームワークについて説明し、symfony コマンドを使用してプロジェクト構造を初期化します。

はじめに

symfony では、プロジェクトは、同じプロジェクトモデルを共有する、指定されたドメイン名の下での一連のサービスと効果的な操作です。

プロジェクトでは、アプリケーション内の操作は一連のロジックであり、各アプリケーションは同じプロジェクト内の他のアプリケーションに干渉することなく、通常どおり独立して実行できます。

ほとんどの場合、プロジェクトには 2 つのアプリケーションが含まれており、1 つはフォアグラウンド表示を担当し、もう 1 つはバックグラウンド処理を担当し、同じデータベースを使用します。もちろん、1 つのプロジェクトに多数の小規模サイトを含めて、各サイトを異なるアプリケーションにすることもできます。異なるアプリケーション間で使用されるハイパーリンクには絶対パスを使用する必要があることに注意してください。

すべてのアプリケーションはモジュールのセットであり、各モジュールは特別な機能を担当します。通常、モジュールは同様の機能のために 1 つのページまたはページのグループを使用します。たとえば、モジュールには、ホーム、記事、ヘルプ、ショッピングカート、アカウントなどが含まれます。

モジュールの機能: 各モジュールには独自の機能があります。たとえば、shoppingCart モジュールには追加、表示、更新の機能が必要です。機能的な動作は、典型的な Web アプリケーションにおけるページの動作と考えることができます。

新しいプロジェクトのレベルが多すぎる場合は、ファイル構造をシンプルに保つためにモジュール内のすべての関数をグループ化するのが簡単です。アプリケーションがより複雑になると、機能を論​​理モジュールに編成できます。

各アプリケーションは、異なる構成やデータベースなど、異なる環境で実行できます。通常、すべての新しいアプリケーションは 3 つの環境 (開発、テスト、最終運用) で実行されます。各アプリケーションは、必要に応じてさらに多くの環境で実行でき、異なる環境で構成アクセサリを変更するだけで済みます。

たとえば、テスト環境では警告とエラーをログに記録する必要がありますが、最終的な運用環境ではエラーのみをログに記録する必要があります。キャッシュ アクセラレーションは通常、開発環境ではオンになりませんが、テスト環境や最終的な運用環境ではオンにする必要があります。開発およびテスト環境では、テスト データを最終製品のリモート データベースに保存する必要がある場合があります。すべての環境は 1 台のマシン上に共存でき、通常は最終的な運用環境のみが運用サーバー上に存在します。

注: サンドボックス経由で symfony を使用している場合、「sf_sandbox」という名前のプロジェクトと「frontend」という名前のプロジェクトをサンドボックス アプリケーション内に準備する必要はありません。 Web サーバーをセットアップする必要もありません。プログラムを web/ ルート ディレクトリに置くだけです。

Pake

SymFony は、プロジェクト、アプリケーション、モジュールを管理するために特殊なツール Pake を使用します。 Pake は、Rake コマンド (make コマンドを Ruby に変換するツール) に似た php ツールです。 pakefile.php と呼ばれる特別な構成ファイルに基づいて、いくつかの管理タスクを自動化します。 symfony コマンドラインの代わりに pake ツールを使用すると、すべてが非常に簡単になります。

すべての有効な管理操作コマンドのリストを取得するには、プロジェクト ディレクトリに次のように入力するだけです:

$ symfony -T

CLI (コマンド ライン操作) タスク スケジュールは、プロジェクトの初期段階で使用されます。 CLI タスクのスケジューリングの詳細については、CLI の章を参照してください。

プロジェクト設定

すべてを開始する前に、プロジェクトを保存するための新しいディレクトリを作成する必要があります:

$ mkdir /home/steve/myproject

その後、プロジェクトの初期化を開始してオリジナルのファイルとディレクトリを生成します。次のように入力するだけです:

$ cd /home/steve/myproject
$ symfony init-project myproject

これは新たに作成されたファイルシステム ツリー構造の概要:

apps/
batch/
cache/
config/
data/
doc/
lib/
log/
test/
web/

symfony コマンドは次の場所にあります。現在のプロジェクトの利用可能なディレクトリ いつでも呼び出します。

アプリ設定

プロジェクトはまだ完了していません。まだ少なくとも 1 つのアプリが必要です。まず symfony init-app コマンドを使用してアプリケーションを初期化し、コマンドに続くパラメーターを使用してアプリケーションに名前を付けます:

$ symfony init-app myapp

これにより、プロジェクトのルート ディレクトリの apps/ フォルダーに myapp ディレクトリが作成されます。デフォルトのアプリケーション設定とサイトのディレクトリ ファイルのセット:

apps/
myapp/
config/
i18n/
lib/
modules/
templates/

一部は、それぞれのデフォルトでフロントエンド コントローラーとして機能しますPHP ファイルは、プロジェクトのルート ディレクトリの Web ディレクトリにも作成されます:

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

保存然后退出,这样就完成了。

相关推荐:

简述Symfony核心类

symfony window下安装时候出现问题的解决方法

symfony安装详细教程

以上がsymfony がコマンドを使用してプロジェクトを作成する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。