3. 开始学习Zend Framework(ZF框架的目录结构)

打开项目中的index.php文件,你应该能看到以下代码:
<?php
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ?
getenv('APPLICATION_ENV') : 'production'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
/** 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();
    index.php文件为application目录和Zend类库文件夹设置了包含路径,设置了你现在正在开发的环境变量,加载了配置的设置信息,以及运行位于application目录中的引导文件。
    你可能已经猜到,你只是在一个标准的请求经过的路径。接下来要提的文件是Bootstrap.php,这个文件放置在application目录下。打开文件你会看到以下代码:
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
 
}
Bootstrap.php文件是将应用程序要使用的模块和组件进行初始化的主要文件。最后,让我们看看在应用程序的重要目录。在根目录下是library, application, public和test文件夹以及zfproject.xml文件。library文件夹包含Zend框架的文件,我建议以后可以把其他的第三方扩展和组件放在在这个位置。application目录包含许多子目录如controllers,views,configs和models:
  • controllers目录包含应用程序的所有控制器。
  • views目录包含应用程序的所有视图。
  • models目录包含应用程序的所有模型。
  • configs目录包含为应用程序设立的所有配置文件。
因为有很多的文件夹,我创建了一个表格来帮助你确定每个文件夹包含什么,有什么作用:
目录/文件 主要用途
application 包含核心应用程序代码,你可以在这里找到任何应用程序所有的controllers,model和views。
library 包含Zend框架的库文件,我建议将所有第三方的源代码放在这里。
test 包含控制器的单元测试用例,PHP的单元被使用。
public 包含.htaccess和index.php文件,我建议将所有应用程序的CSS、JavaScript、图片和任何静态内容放在这里。
.zfproject.xml 由Zend_Tool创建的文件来识别整个项目。
application/controller 所有应用程序的控制器都应该放在这里。
application/views 所有应用程序的助手和视图都应该放在这里。
application/models 所有应用程序的模型都应该放在这里。
application/configs 所有应用程序的配置文件都应该放在这里。
Bootstrap.php Bootstrap.php文件用于为应用程序初始化组件。

1. 开始学习Zend Framework(安装环境和下载工具)

    不管你的编程能力怎么样,现在博主Tony要和你一起进入Zend Framework(以后简写为ZF)的世界了。你可能是编程的菜鸟,也可能是经验丰富的开发人员。不管你的能力如何,你为什么想学习ZF,现在你在我的博客里,看着这个ZF的文章。现在你就要配置你电脑的环境并且和很多技术打交道,最终使用ZF驱动你的应用程序运行。

    你也许会问,为什么需要做这些事情?其实我刚刚开始学习PHP的时候,龚卫华老师就要我们配置环境,包括ApacheMySQLPHP,当时是弄得焦头烂额啊!回顾我的经历,我可以说,配置环境会让你马上学会一些东西。我们这样想想:如果我给你一箱工具,要求你要建一座房子,你究竟是怎么着手实现这个任务,如果你不知道如何使用在箱子里的每个工具是不是根本不知道如何下手?所以你也需要了解这些用来建造你的ZF应用程序的工具。

    需要的工具:

    如果你的电脑是Windows的,那么我建议你去下载集成环境WAMP服务器(Windows下的Apache+MySQL+PHP的简称吧应该),地址是http://www.wampserver.com/en/#download-wrapper,在这个炫酷的官方网站里面,你可以下载到最新版本的WAMP服务器,安装完成之后,在右下角变成绿色的图标之后就可以访问你的http://localhost了,里面有phpmyadmin可以查看和操作你的服务器,你也可以去下载Navicat for MySQL,这个工具跟phpmyadmin的区别就是它是软件,性能会比网页版的工具好一点并且还有生成E-R模型图等等的高级功能,它值得你拥有!Navicat的下载地址是:http://www.navicat.com/en/download/download.html

    完成了本地服务器的安装搭建之后,你现在需要去下载一个叫做Zend Studio的开发工具,百度百科说:“Zend StudioZend Technologies开发的PHP集成开发环境Integrated Development Environment IDE)。也支持HTMLjs标签,但只对PHP语言提供调试支持。因为是同一个公司的产品,所以提供的Zend Framework方面的支持比其他软件好。Zend Studio 5.5系列后,官方推出利用了Eclipse平台,基于PDTZend Studio for Eclipse 6.0,之后的版本也都构建于EclipseZend Studio是屡获大奖的专业PHP集成开发环境,具备功能强大的专业编辑工具和调试工具,支持PHP语法加亮显示,支持语法自动填充功能,支持书签功能,支持语法自动缩排和代码复制功能,内置一个强大的PHP代码调试工具,支持本地和远程两种调试模式,支持多种高级调试功能。”没错,这个开发工具牛逼得不行,博主我也为之倾倒!我们安装它就是为了搭建一个Zend Framework的程序,因为都是Zend公司的东西嘛,所以比较配套!我建议去下载8.0.0或者8.0.1版本的Zend Studio,因为他们对ZF的支持比较好!

    创建第一个Zend Framework工程:

    打开Zend Studio,以英文版为例:点击File->New->Zend Frameword Project,在Contents中选择工程的路径,我建议将工程建立在wamp服务器下的www目录下你自己创建的一个文件夹下项目的名字自拟,然后选择Finish就行了。

    接下来,你得去Zend的官方网站下载最新的Zend Framework的类库,下载地址是http://framework.zend.com/download/latest,今天的版本是1.11,刚刚好喝上图的Zend Framework Version是一致的。然后将压缩包解压,将主目录下的library中的Zend这一个文件夹拷贝到你的项目目录的library文件夹下面,如下图:

zend-framework目录

这样之后,你就可以在你的浏览器中打开http://localhost/你的项目目录/public,就可以看到Zend Framework的欢迎页面了。这就当做是Zend Framework的第一个Hello World程序吧。

PHP工程师面临成长瓶颈

作为开发中应用最广泛的语言之一,PHP有着大量的粉丝,那么你是一名优秀的程序员吗?在进行自我修炼的同时,你是否想过面对各种各样的问题,我该如何突破自身的瓶颈,以便更好的发展呢?
PHP工程师面临成长瓶颈

先明确这里所指的PHP工程师,是指主要以PHP进行Web系统的开发,没有使用其的语言工作过。工作经验大概在3~4年,普通的Web系统(百万级访问,千成级数据以内或业务逻辑不是特别复杂)开发起基本得心应手,没有什么问题。但他们会这样的物点:

◆除了PHP不使用其它的语言,可能会点shell 脚本。

◆对PHP的掌握不精(很多PHP手册都没有看完,库除外)。

◆知识面比较窄(面对需求,除开使用PHP和mysql ,不知道其它的解决办法)。

◆PHP代码以过程为主,认为面向对象的实现太绕,看不懂。

这些PHPer在遇到需要高性能,处理高并发,大量数据的项目或业务逻辑比较复杂(系统需要解决多领域业务的问题)时,缺少思路。不能分析问题
的本质,技术判断力比较差,对于问题较快能找出临时的解决办法,但常常在不断临时性的解决办法中,系统和自己一步步走向崩溃。那怎么提高自己呢?怎么可以
挑战难度更高的系统?

更高的挑战在那里?

结合我自己的经验,我列出一些具体挑战,让大家先有个感性的认识。

高性能系统的挑战在那里?

◆如何选择Web服务器?要不要使用fast-cgi 模式;

◆要不要使用反向代理服务?选择全内存缓存还是硬盘缓存?

◆是否需要负载均衡?是基于应用层,还是网络层? 如何保证高可靠性?

◆你的PHP代码性能如何,使用优化工具后怎么样? 性能瓶颈在那里? 是否需要写成C的扩展?

◆用户访问有什么特点,是读多还是写多?是否需要读写分离?

◆数据如何存储?写入速度和读出速度如何? 数据增涨访问速读如何变化?

◆如何使用缓存? 怎么样考虑失效?数据的一致性怎么保证?

高复杂性系统的挑战在那里?

◆能否识别业务所对应的领域?是一个还是多个?

◆能否合理对业务进行抽象,在业务规则变化能以很小的代价实现?

◆数据的一致性、安全性可否保证?

◆是否撑握了面向对象的分析和设计的方法

这里所列出的问题,你都能肯定的回答,说明在技术上你基本已经可能成为架构师了。如何你还不能回答,你需要在以下几个方向加强。

怎么样提高,突破瓶颈

如何你还不能回答,你需要在以下几个方向加强:

◆分析你所使用的技术其原理和背后运行的机制,这样可以提高你的技术判断力,提高你技术方案选择的正确性;

◆学习大学期间重要的知识, 操作系统原理,数据结构和算法。知道你以前学习都是为了考试,但现在你需要为自己学习,让自己知其所以然;

◆重新开始学习C语言,虽然你在大学已经学过。这不仅是因为你可能需要写PHP扩展,而且还因为,在做C的应用中,有一个时刻关心性能、内存控制、变量生命周期、数据结构和算法的环境;

◆学习面向对象的分析与设计,它是解决复杂问题的有效的方法。学习抽象,它是解决复杂问题的唯一之道。

原文地址:http://www.jianglb.com/2010/11/22/php-dev.html

学历代表过去,只有学习力才能代表将来,尊重经验的人

学历代表过去,只有学习力才能代表将来,尊重经验的人,才能少走弯路

有一个博士分到一家研究所,成为学历最高的一个人。
有一天他到单位后面的小池塘去钓鱼,正好正副所长在他的一左一右,也在钓鱼。
他只是微微点了点头,这两个本科生,有啥好聊的呢?
不一会儿,正所长放下钓竿,伸伸懒腰,蹭蹭蹭从水面上如飞地走到对面上厕所。
博士眼睛睁得都快掉下来了。水上飘?不会吧?这可是一个池塘啊。
正所长上完厕所回来的时候,同样也是蹭蹭蹭地从水上飘回来了。
怎么回事?博士生又不好去问,自己是博士生哪!
过一阵,副所长也站起来,走几步,蹭蹭蹭地飘过水面上厕所。这下子博士更是差点昏倒:不会吧,到了一个江湖高手集中的地方?
博士生也内急了。这个池塘两边有围墙,要到对面厕所非得绕十分钟的路,而回单位上又太远,怎么办?
博士生也不愿意去问两位所长,憋了半天后,也起身往水里跨:我就不信本科生能过的水面,我博士生不能过。
只听咚的一声,博士生栽到了水里。
两位所长将他拉了出来,问他为什么要下水,他问:“为什么你们可以走过去呢?”
两所长相视一笑:“这池塘里有两排木桩子,由于这两天下雨涨水正好在水面下。我们都知道这木桩的位置,所以可以踩着桩子过去。你怎么不问一声呢?”
学历代表过去,只有学习力才能代表将来。尊重经验的人,才能少走弯路。一个好的团队,也应该是学习型的团队。

reference list:

老紫竹的blog。

http://www.cnblogs.com/laozizhu/archive/2009/03/24/1420820.html

 

Tonitech版权所有 | 转载请注明出处: http://www.tonitech.com/?p=115