PHP 5.3 new feature
不必等到PHP6,PHP 5.3给我们的新惊喜,简单介绍如下:
1 命名空间(Name Space);
2 use - 关键字;
3 别名(NameSpace AS Alias)
与SQL类似,可以对命名空间声明为其它别名。
4 命名空间的方法
5 全局命名空间
6 __callstatic - 关键字
| RSS订阅
不必等到PHP6,PHP 5.3给我们的新惊喜,简单介绍如下:
1 命名空间(Name Space);
2 use - 关键字;
3 别名(NameSpace AS Alias)
与SQL类似,可以对命名空间声明为其它别名。
4 命名空间的方法
5 全局命名空间
6 __callstatic - 关键字
今天,是一个值得记录的日子。
准备了三个月多,也是离开周九晚六工作的三个月,没什么时间概念,也没有什么周末感觉,飞快地从4月到了7月中旬。
和我们的国家一样,经历着各种变化与考验。
今天,我们的PHP培训班开课了,承载着同学们的期昐,我对自己的承诺,梦想一起开始。
Tags: 培训 奔跑PHP开发之MVC架构
MVC是Model(模型)-View(视图)-Controlller(控制器)的简称。
MVC是一种软件开发架构,在近几年的Web应用开发中非常流行。简单的说,这三件事情还是很简单。Model是负责如何与数据库交互,它是后端的PHP OO类库,其它语言比如Ruby on Rails或C++、Java亦同;View基本上是前端的用户界面。Controller负责处理操作商业逻辑,在前两者之间协作。
这些看似容易解释,但有时这个概念也有点抽象,比较难以把握。
坦率地说,我这么多年的Web开发中,我也没有真正研究MVC的细节,虽然我的书中也有介绍。直到最近,一些读者开始向我请教这方面的问题。
在本篇文章中,我希望向大家解析一下PHP MVC这一强大架构的开发,希望给各位PHP开发者提供一些帮助。
MVC与 PHP 开发
Model-View-Controller这种结构划分,实际上有很多思想参考,实际上是软件开发发展历程中开发大型项目的自然发展结果。比如 Java的Class, JSP和Struts;Ruby on Rails内置了MVC的结构;虽然PHP和这些有点不太一样,但它并不意味着我们不能做。
Model层
MVC结构是用在较大的项目上应用,利用OO进行编码。Model层在一个PHP 应用程序中,通常是一个类(或多个)。通常情况下,这个类是处理或保存数据表,如操作数据库中的会员表记录,查询会员记录等方法。
比如,我们有一个User类,有一些变量,比如username,password,email,以及其他的方法,如新的用户的创建,登录,验证,注销等方法。
稍候,我们将看如何将User这个对象用在应用程序Controller的一部分。
Model在本质上,告诉你有什么方法可供选择-即在数据库中如何操作数据。
我想我必须澄清(如果不是已经明确的) -这应该是PHP的全部代码,也正是我们要用OO开发原因之一。
即使没有明确使用MVC,这部分代码不应有HTML或任何的输出(重定向等)处理,如果已经有这种操作或必须需要输出,则要通过一个参数处理或返回值。 (这是编程的最基本素质,但目前的情况是,多数Web程序员没有什么学位或没学过计算机… )
下面是Model模型的代码,在一个真正的Web应用上,这仅仅是最简单的代码,它没有完成所有的细节。
class User
{
public $username;
public $password;
public $email;
function __constructor ($u, $p, $e)
{
$this->username = $u;
$this->password = $p;
$this->email = $e;
}
function create()
{
//在用户表中插入记录
}
function login()
{
// 检查用户表,是否已经登录
}
static function authenticate($u, $p)
{
// 验证用户表
$query = “SELECT * FROM users WHERE user_name={$u} AND password = {$p}”;
$result = mysql_query($query);
$row = mysql_fetch_array($result);
if(count($row)==0){
return false;
}else{
return true;
}
}
function logout()
{
//用户退出登录
}
}
View层
View层最简单的说,就是用户界面。不过,这并不意味着它只是HTML 。我们还是须在应用程序界面加入一些PHP逻辑处理。比如,如果在登录的网站上显示, “您好, [UserName] ”,这里一定会需要一些PHP代码来处理,对不对?这就是关于View的说明。当然,所有的CSS 、JavaScript也都是Viewn层的一部分。
这是非常重要的,无论PHP代码在这里,只是需要采取哪些用来显示界面正确。没有额外的“行动”代码属于看法-这是控制器的工作,我们将看到未来。
这是非常重要的,无论如何都要用PHP代码来处理显示正确的界面。强调一点的是,View层没有任何“action”的代码,这部分是Controller的工作,稍候我们介绍。
各位,是不是很容易理解呢,为了更透彻的理解,让我们来看一个例子。以下代码没有使用XHTML 1.0规范 ,仅做参考。
<?php
require_once(’User.php’);
//验证用户是否已经登录
if (User::authenticate($_COOKIE['username'], $_COOKIE['password']))
{
header(”Location:/my.php”);
exit();
}
?>
<html>
<head><title>请登录</title></head>
<body>
<h1>登录</h1>
<?php
if ($_GET['error'] == 1)
{
echo ‘用户名或密码错误,请重新登录.<br />’;
}
?>
<form action=”login_action.php” method=”post”>
用户名: <input type=”text” name=”username” /><br />
密码: <input type=”password” name=”password” /><br />
<input type=”submit” value=”登录” />
</form>
</body>
</html>
View层目前可以使用Smarty等模板类来处理。
Controller层
如果你没有实际的开发工作经验或读过相关书籍或文章,有时候很容易混淆Controller的定义。和View层一样,Controller一样重要,我们一起来看一个例子。
现在我们有一个登录页面,即一个HTML表单指向某个URL(除非使用AJAX),我们不应该直接指向Model文件(如User.php),因为该文件仅仅是一个类代码,因此它不会做任何事情。也不应该提交给View层文件(叫login.php),因为它仅做显示的界面。
这就是控制器-Controller的作用,你的表单应该提交到一个叫login_action.php的文件。在此文件中,您可以创建一个User类的实例,初始化后,使用合适的方法来处理登录 。
大多数开发者都从Controller里输出,因为写起来很方便。如果有一个登录表单, 它只是打印“登录不正确”这样的字眼,看起来的确很简单。
不过要真正利用的MVC架构优势,Controller控制器(类似于Model)应该不会有任何HTML输出,而是使用重定向操作。我们可以使用cookies/SESSION,数据库存储,文件缓存,或查询字符串给View层文件,在View层中实现显示输出以及保存状态等动作。
现在让我们看一个Controller控制器代码。
<?php
require_once(’User.php’);
//检查用户名密码是否正确
$currentuser = new User($_POST['username'], $_POST['password'], ”);
if ($currentuser->login())
{
// 设置Cookie,重定向到主页
header(”Location:/main.php”);
exit();
}
else
{
//错误,重定向到登录页
header(”Location:/login.php?error=1″);
exit();
}
?>
总结
使 用MVC结构的代码更易于理解。对于其他开发者进入开发时会更快到位,当自己在过一段时间翻回来看这段程序时也容易得多,
因为我们很确定地知道,在哪里找什么样的代码。如果要改变一些信息在显示界面,你只需要看View层程序。如果数据库结构发生变化,比如密码加密形式不同,只需要更改Model层程序。
通过以上我们看到MVC架构的优点和强大之处,它将让基于OO的Web开发变得更有效率。
有任何问题或不足之处,敬请指出。
“Payment routing through arbitrary mutual-credit trust networks on both standalone and distributed networks of servers”
http://ripple.sourceforge.net/
http://sourceforge.net/projects/ripple
“Baifox is a GPL control panel to managed services of a hosting service. It doesn’t try to compete with Cpanel, Plesk or Ensim propietary software, but sometime, could be a good alternative. Baifox is really lighter than others panel, don’t disturb server with heavy loads and cpu consume, only manage services. You can adapt baifox to your needs. Also, unlike other propietary software, it works in most linux distribution and it has been widely tested in DEBIAN. You must install services before and then you install baifox and configure it with your paths.
Is enterilly developed with PHP, some javascript code, and not need database system, all configuration is saved in XML format, and works under Nanoweb PHP server. Fully compatible with PHP4 and PHP5.”
“Web Business Pro is a Web application designed for everyday business activities. It includes support for customer lists, inventory, receipt printing, and accounting. Fully featured search functions and filters make it easy to find what you need quickly.”
http://programserve.com/index.php/Phpprobiz
“Ortro is meant to be an easy and centralized way for job scheduling and application monitoring.
The aim is to create a web application that allows you to:
* schedule your jobs in a centralized way;
* archive jobs result;
* create jobs for system monitoring;
* create jobs application monitoring;
* run existing scripts on remote hosts in secure way using ssh;
* create simple reports using query from db’s (html,txt,csv,xls) and send it by mail;
* tests your web application;
* send a notification on job results.”