Zend Framework使用心得总结

为了应付蛋疼的作业,学了一周的Zend,既然学了,不能浪费啊,将经验总结下吧。其中可能有不正确或者完全是本人自己的想法,可能跟官方的标准做法不同,望各位指正。


首先是Zend的安装

在网上下载好Zend的压缩包后,解压到任意一个目录下,然后确认自己的环境变量Path中有可运行php.exe的目录(没有的话会提示没有php.exe这个可运行程序,加上后记得注销下让变量生效)

打开命令提示符,cd进入ZendFramework的bin目录,然后试试

zf show version


如果能输出当前的版本的话,说明安装成功,就可以创建项目了

zf create project yourprojectname path/to/location

然后就可以看到你创建的项目了,如下图所示:


然后就可以开始配置运行环境

将原解压文件中的library下的文件全部的拷到你创建的项目下的library目录下,

然后修改下apache的根目录,让根目录指向public,具体为什么后面说,然后就可以让apache运行了,试试http://localhost/index,如果成功的话就可以看到欢迎界面了。


接下来介绍下各个目录

docs :各种文档

library:zend的各种功能实现的源代码

public:网站根目录

tests:内放用来测试的程序,当然,还是得你自己写

application::最重要的文件夹了,里面是按MVC的实现布置的,对于MVC,可看我的简单介绍:ASP.NET MVC 尝鲜

configs:配置文件

controllers:控制器

models:模型

views:视图

scripts:放各种controller对应的视图文件,这些文件的后缀名都是phtml

helpers:放各种帮助类


然后就是一个关键的问题,怎样从Controller的Action中向view中传值以及实现一个页面的完整流程

很简单,比如拿刚创建好的项目中的IndexController来说,它对应的就是views文件夹下的index文件夹

而其中的indexAction就是具体处理某个访问的Action,它对应的view就是index.phtml

而我们访问的localhost/index表示的就是采用indexController,而action采用默认的indexActio处理

view->content = "Hello World!!!";
    }


}

然后在index.phtml


Welcome to the Zend Framework!

This is your project's main page

content;?>

接下来介绍下根目下的俩个文件

首先是.htacess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

相信是明白的,无非是将所有的非资源请求交由index.php处理,这也是zend的MVC实现的关键之一,将public作为根目录就是因为这个原因

然后是index.php,通常称它为入口文件,我们来看看:

bootstrap()
            ->run();

整个网站的入口就是在这里,所有的非资源请求都会经过这里处理。我们也可以加一些其它的要用到的初始化程序,比如数据库、Session以及母板页等等

现将我的贴出,仅供参考,应该是不太规范的,但是能用

_<~~
        )));

require_once 'Zend/Db.php';

$params = array(
    'host' => '127.0.0.1',
    'username' => 'root',
    'password' => '',
    'dbname' => 'market',
    'charset' => 'UTF8',
    'driver_options'  => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8' ),
);

$db = Zend_Db::factory('PDO_MYSQL', $params);

//require_once 'Zend/Registry.php';
//Zend_Registry::set('db', $db);
require_once 'Zend/Db/Table.php';
Zend_Db_Table::setDefaultAdapter($db);//我是用继承Zend_Db_Table的方法实现model的,因此直接将$db设置给Zenf_Db_Table,你也可以用Zend_Registry注册变量的方法

/** Setup layout */
require_once 'Zend/Layout.php';
Zend_Layout::startMvc(APPLICATION_PATH . '/views');//MVC中的被我称为母版页的初始化程序,它默认为layout.phtml


/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
                APPLICATION_ENV,
                APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
        ->run();

还有些 杂碎的提醒

css还有js放在public文件夹下,可以用Zend内置的helper headScript等,可以参考下我的layout.phtml

doctype('XHTML1_STRICT') ?>

    
        
        headTitle() ?>
        headLink()->appendStylesheet("/css/style.css"); ?>
        headLink() ?>
        headScript()->appendFile("/js/jquery.js"); ?>
		headScript() ?> 
	 
	 
		
layout()->content ?>



还有Zend_Form挺好用的,也给出我的一个例子,具体请看手册:
setMethod('post');
        $this->addElement('text', 'email', array(
            'validators' => array(
                array('regex', false, '/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/i')
            ),
            'required' => true,
            'filters' => array('StringToLower'),
            'label' => '邮箱:',
            'decorators' => array(
                array('ViewHelper', array('helper' => 'formText')),
                array('Label', array(
                        'class' => 'label',
                        'tag' => 'div',
                )),
                array('HtmlTag', array(
                        'tag' => 'div',
                        'class' => 'element',
                )),
            ),
        ));
        $this->addElement('password', 'password', array(
            'required' => true,
            'label' => '密码:',
            'decorators' => array(
                array('ViewHelper', array('helper' => 'formPassword')),
                array('Label', array(
                        'class' => 'label',
                        'tag' => 'div',
                )),
                array('HtmlTag', array(
                        'tag' => 'div',
                        'class' => 'element',
                )),
            ),
        ));
        $this->addElement('submit', '提交', array(
            'decorators' => array(
                array('ViewHelper', array('helper' => 'formSubmit')),
                array('HtmlTag', array(
                        'tag' => 'div',
                        'class' => 'submit',
                )),
            ),
        ));
    }

}

?>

Zend_Db_Table的例子:

_name = 'user';
        $this->_primary = 'uid';
        parent::_setup();
    }

    public function emailExist($email) {
        $select = parent::select()->where('email = ?', $email);
        $result = $this->getAdapter()->fetchOne($select);

        if (!empty($result))
            return true;
        else
            return false;
    }                                                                  

}

?>




好了,就先介绍到这,再说一次,上面的例子都是参考,可能不太规范,
网上的zend的学习资料很多,手册也挺详细的,毕竟是php的官方都推荐的,是个不错的框架,也方便使用,推荐大家想快速开发网站的时候用。

你可能感兴趣的:(PHP)