诗意的边缘
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 创建Zend Framework项目

当Zend Framework安装好之后,我们就可以创建一个项目来进行开发了。本节介绍两种工具来帮助我们快速搭建一个项目的基本框架,然后在此基础上开始我们的开发之旅。

2.2.1 使用ZF tool

ZF tool是一个很好用的工具,可以帮助我们快速创建项目,我们以后也会用它来快速创建控制器、模型、视图、表单等各类文件。

下载Zend Framework后的压缩包里,有一个bin文件夹,里面有zf.bat、zf.php和zf.sh三个文件。

1.ZF tool的安装

Linux系统下

将该文件夹中的zf.sh和zf.php文件复制到/usr/bin目录下(zf.bat是Windows系统下用的):

        cd /解压路径/bin
        sudo cp zf.sh /usr/bin
        sudo cp zf.php /usr/bin

然后用vi编辑器打开~/.bashrc:

sudo vi ~/.bashrc

在该文件的末尾,添加以下一行代码:

alias zf=/usr/bin/zf.sh

.bashrc主要保存一些个性化设置,如命令别名、路径等,~/是用户家目录的简写,如我的用户名是unity,~/即表示/home/unity目录。alias命令为当前用户创建了一个zf.sh的别名zf,以便随处可以使用zf,不需要再切换到/usr/bin目录里去。注意等号前后不要有空格,否则会出错。

重新启动终端,ZF tool就可以使用了。

提示:

以.为开头的文件是隐藏文件,可以用ls -a命令查看。在图形窗口界面中,可以用Ctrl+H组合键查看。

Windows系统下

在C:\Program Files下创建一个叫做Zend的文件夹。

将下载的Zend Framework文件解压包中的bin文件夹复制到Zend文件夹中。

将C:\Program Files\Zend\bin目录和XAMPP中的PHP目录添加到系统环境变量中去:[我的电脑]->[属性]->[高级]->[环境变量]->[系统变量]中的path;双击后在系统变量值的最后加上:“;C:\Program Files\Zend\bin;F:\xampp\php;”(引号里的内容)。注意每个变量值之间要用英文分号分割。

安装完毕,重启计算机。

重启后测试,命令行:cmd进入后;输入zf show version,回车后就可以看到你当前的Zend Framework的版本了,如图2-2所示。

图2-2 使用zf show version查看Zend Framework版本

注意,如果在环境变量中不添加F:\xampp\php,将出现如图2-3所示的提示。

图2-3 缺失环境变量路径的运行错误

2.Zend Framework的使用

在终端里输入以下命令,即可创建项目:

        cd /var/www
        zf create project kehuanedu

项目创建成功,会有如下的提示:

        Note: This command created a web project, for more information setting up your VHOST, please see docs/README
        Testing Note: PHPUnit was not found in your include_path, therefore no testing actions will be created.

第一行提示告诉我们项目创建成功,关于项目的一些详细说明,可以参看docs/README.text文件。

但第二行提示说,PHPUnit没有找到,所以测试文件没有被创建。PHPUnit是一个轻量级的PHP测试框架,用来对程序进行测试,如果你的系统安装有PHPUnit,那么在开发过程中使用ZF tool创建程序时,Zend Framework会自动在tests目录下创建对应的测试文件骨架,这无疑为我们编写测试文件提供了很大的方便。如果你的系统没有安装PHPunit,建议自行安装它,但这并不是必须的,如果你不打算在学习时进行单元测试就不用安装,本书不打算涉及TDD(测试驱动开发),所以这对我们阅读本书没有影响。如果你安装了PHPUnit,可以再次试着用ZF tool创建项目或控制器、方法,会发现第二个提示消失,再到tests目录下查看,会看到自动生成的测试类文件。

此时访问http://kehuan.edu,可以看到如图2-4所示的界面。

图2-4 成功安装框架后的首页界面

好了,现在让我们进入刚刚创建的kehuanedu文件夹,可以看到通过Zend Framework创建的项目,拥有如下目录结构:

        kehuanedu
        |-- application
        |   |-- Bootstrap.php
        |   |-- configs
        |   |             `-- application.ini
        |   |-- controllers
        |   |             |-- ErrorController.php
        |   |             `-- IndexController.php
        |   |-- models
        |   `-- views
        |                 |-- helpers|   `-- scripts
        |                   |-- error|     | `-- error.phtml
        |                   `-- index|       `-- index.phtml
        |-- docs
        |   `-- readme.text
        |-- library
        |-- public
        |   `-- index.php
        `-- tests
            |-- application
            |             `-- bootstrap.php
            |-- library
            |             `-- bootstrap.php
            `-- phpunit.xml

我们对这一结构做一番说明。

● application/ 存放应用程序的目录,包括MVC系统、配置文件、服务和引导程序(Bootstrap.php)。

● application/configs/ 配置文件目录。

● application/modules多模块目录,如admin(后台)、default(前台)、shop(商城)等。各个模块下都有自己的controllers、modules和Views。在本例中,目前还没有创建模块,所以这个目录尚不存在,我们将会在第9章中创建admin模块。

● controllers/models/views/ 控制器/模型/视图目录。

● application/cache存放缓存等数据。

● application/helpers/ 存放“动作助手”(action helper)的目录。这些助手类默认的命名空间是“Controller_Helper_”,如果是多模块,那么命名方式将是“<Module>_Controller_Helper”。

● Bootstrap.php应用程序入口文件。这个类的主要工作是引导应用程序,注册并初始化组件(component)。

● docs/ 文档和说明文件。

● library/ 存放类库的目录。第三方的类库和自己写的类库放在这里进行自动加载,但注意要用自己独立的命名空间(建子目录)。

● public/ 存放公开文件的目录,也是网站的根目录,存放可以被用户访问的文件,如JavaScript、CSS和图片等。index.php是应用程序的单入口,其主要工作是建立PHP环境,引用Bootstrap.php来初始化,并调用前置控制器的dispatch()方法来分发请求。

● tests/ 存放测试文件。如果系统安装了PHPUnit,则在使用ZF tool创建控制器方法时,会自动在该文件夹下创建测试文件。

以上的结构对于一般应用来说足够用了,这里提供一下官方网站上的更为合理的目录结构以供参考:

        <project name>/
            application/
                services/
                configs/
                controllers/
                    helpers/
                layouts/
                    filters/
                    helpers/
                    scripts/
                models/
                modules/
                    modulename/
                        controllers
                        forms
                        models
                views/
                    filters/
                    helpers/
                    scripts/
                Bootstrap.php
            data/ cache/
                indexes/
                locales/
                logs/
                sessions/
                uploads/
            docs/
            library/
            public/
                css/
                js/
                images/
                .htaccess
                index.php
            scripts/
                jobs/
                build/
            temp/
            tests/

在终端只要输入zf然后运行,就会出现ZF tool命令的所有说明和语法提示:

        Zend Framework Command Line Console Tool v1.11.10
        Usage:
            zf   [--global-opts]   action-name   [--action-opts]   provider-name [--provider-opts] [provider parameters ...]
            Note: You may use "?" in any place of the above usage string to ask
    for more specific help information.
            Example: "zf ? version" will list all available actions for the version provider.
        Providers and their actions:
          Version
            zf show version mode[=mini] name-included[=1]
            Note: There are specialties, use zf show version.? to get specific help on them.
          Config
            zf create config
            zf show config
            zf enable config
            Note: There are specialties, use zf enable config.? to get specific help on them.
            zf disable config
            Note: There are specialties, use zf disable config.? to get specific help on them.
          Phpinfo
            zf show phpinfo
          Manifest
            zf show manifest
          Profile
            zf show profile
          Project
            zf create project path name-of-profile file-of-profile
            zf show project
            Note: There are specialties, use zf show project.? to get specific help on them.
          Application
            zf change application.class-name-prefix class-name-prefix
          Model
            zf create model name module
          View
            zf create view controller-name action-name-or-simple-name module
          Controller
            zf create controller name index-action-included[=1] module
          Action
            zf create action name controller-name[=Index] view-included[=1] module
          Module
            zf create module name
          Form
            zf enable form module
            zf create form name module
          Layout
            zf enable layout
            zf disable layout
          DbAdapter
            zf configure db-adapter dsn section-name[=production]
          DbTable
            zf create db-table name actual-table-name module force-overwrite
            Note: There are specialties, use zf create db-table.? to get specific
    help on them.
          ProjectProvider
            zf create project-provider name actions

在接下来的学习中,我们会频繁使用这些命令,届时再详加讲解。

提示:

使用ZF tool时,注意到会更新一个.zfproject.xml,该XML文件位于根目录下,ZF tool会用这个文件来存放相关的配置,没有这个文件ZF tool不能正常使用。当项目开发结束部署到生产环境时,可以将其删除。

2.2.2 使用Zend Studio

除了使用ZF tool以命令的方式来创建Zend Framework项目、控制器、模型等,也可以使用Zend Studio来完成同样的事情,相比命令行,可视化的操作总是会更直观一些。

要创建一个Zend Framework项目,只需在Zend Studio中单击“File”(文件)菜单下的“New”(创建)→“Local PHP Project”(本地PHP项目)命令,将会弹出如图2-5所示的界面。

图2-5 在Zend Studio中创建新项目

在“Project Name”(项目名称)中填写项目名称,“Location”(位置)选择项目存放路径,“Content(内容)”选择“Zend Framework”,然后单击“Finish”(完成)按钮,即可创建一个Zend Framework项目,创建完成的同时该项目也被导入Zend Studio中了,如图2-6所示。

图2-6 界面左侧显示了导入Zend Studio中的项目文件结构

如果要创建一个名为Login的控制器,则单击“File”(文件)菜单下的“New”(创建)→“Zend Framework Item”命令,将会弹出如图2-7所示的界面。

图2-7 在Zend Studio中创建控制器

选择Zend Controller,单击“Next”(下一步)按钮,在弹出的新窗口中填写要创建的控制器名称,并选择该控制器所在的项目名称,如图2-8所示。

图2-8 用Zend Studio创建demo项目中的Login控制器

填写控制器名称“Login”,然后单击“Finish”按钮,完成创建。通过查看左侧的文件结构,可以看到Controllers中创建了名为LoginController.php的控制器文件,而views视图文件夹中也创建了名为login的文件夹和默认的index.html视图文件,如图2-9所示。

图2-9 刚刚创建的控制器和视图文件在Zend Studio软件界面左侧显示

创建其他诸如模型、视图文件等,方法与上同,就不再赘述了。目前,通过Zend Studio来创建项目,还远不及ZF tool灵活方便,所以建议大家还是尽量使用ZF tool。