1.用PHP编写留言版的多言多语代码
2.php语言是干嘛的(php语言是啥)
3.PHPè¯è¨çç¹ç¹ï¼
用PHP编写留言版的代码
这个小程序一共包含6个文件,其中index.php是多言多语程序入口、post.htm是多言多语留言表单、在lib文件夹里Model、多言多语地址表单源码View 、多言多语Controller三个文件分别实现MVC,多言多语DataAccess是多言多语一个简单的数据库访问类。
复制PHP内容到剪贴板
PHP代码:
<?多言多语php
/
*** 一个用来访问MySQL的类
* 仅仅实现演示所需的基本功能,没有容错等
* 代码未作修改,多言多语只是多言多语把注释翻译一下,加了点自己的多言多语php源码完全静态体会
*/
class DataAccess {
var $db; //用于存储数据库连接
var $query; //用于存储查询源
//! 构造函数.
/
*** 创建一个新的DataAccess对象
* @param $host 数据库服务器名称
* @param $user 数据库服务器用户名
* @param $pass 密码
* @param $db 数据库名称
*/
function __construct($host,$user,$pass,$db) {
$this->db=mysql_pconnect($host,$user,$pass); //连接数据库服务器
mysql_select_db($db,$this->db); //选择所需数据库
//特别注意$db和$this->db的区别
//前者是构造函数参数
//后者是类的数据成员
}
//! 执行SQL语句
/
*** 执行SQL语句,获取一个查询源并存储在数据成员$query中
* @param $sql 被执行的多言多语SQL语句字符串
* @return void
*/
function fetch($sql) {
$this->query=mysql_unbuffered_query($sql,$this->db); // Perform query here
}
//! 获取一条记录
/
*** 以数组形式返回查询结果的一行记录,通过循环调用该函数可遍历全部记录
* @return mixed
*/
function getRow () {
if ( $row=mysql_fetch_array($this->query,多言多语MYSQL_ASSOC) )
//MYSQL_ASSOC参数决定了数组键名用字段名表示
return $row;
else
return false;
}
}
>下面再来介绍一下Model类。
这个类也很简单,多言多语里面的多言多语函数一看就知道,是go内存源码分析针对各种数据操作的,它通过DataAccess访问数据库。
复制PHP内容到剪贴板
PHP代码:
<?php
//! Model类
/
*** 它的主要部分是对应于留言本各种数据操作的函数
* 如:留言数据的显示、插入、删除等
*/
class Model {
var $dao; //DataAccess类的一个实例(对象)
//! 构造函数
/
*** 构造一个新的Model对象
* @param $dao是一个DataAccess对象
* 该参数以地址传递(&$dao)的形式传给Model
* 并保存在Model的成员变量$this->dao中
* Model通过调用$this->dao的fetch方法执行所需的SQL语句
*/
function __construct(&$dao) {
$this->dao=$dao;
}
function listNote() { //获取全部留言
$this->dao->fetch("SELECT * FROM note");
}
function postNote($name,$content) { //插入一条新留言
$sql = "INSERT INTO `test`.`note`
(`id`, `name`, `content`, `ndate`, `add`)
VALUES (NULL, '$name', '$content', NULL, NULL);";
//echo $sql; //对于较复杂的合成SQL语句,<br />
//调试时用echo输出一下看看是圈内公式源码大全否正确是一种常用的调试技巧
$this->dao->fetch($sql);
}
function deleteNote($id) { //删除一条留言,$id是该条留言的id
$sql = "DELETE FROM `test`.`note` WHERE `id`=$id;";
//echo $sql;
$this->dao->fetch($sql);
}
function getNote() { //获取以数组形式存储的一条留言
//View利用此方法从查询结果中读出数据并显示
if ( $note=$this->dao->getRow() )
return $note;
else
return false;
}
}
>看完这两个类之后你可能会发现这与以前我们写程序差不多,的确现在还闻不到MVC的味道,如果你不懂MVC,在这两个类的基础上你完全可以开始写你以前的程序了。例如要显示全部留言,换手z指标源码只需要写入下代码:
复制PHP内容到剪贴板
PHP代码:
<?php
require_once('lib/DataAccess.php');
require_once('lib/Model.php');
$dao=& new DataAccess ('localhost','root','','test');
$model=& new Model($dao);
$model->listNote();
while ($note=$model->getNote())
{
$output.="姓名:$note[name]<br> 留言:<br> $note[content] <br> <hr />";
}
echo $output;
>很亲切吧,呵呵。
有了这个“感情基础”你就不会对MVC望而生畏了,下面我们就要上今天的主菜了,那就是“Controller”闪亮登场!
先大体浏览一下主要结构,它包括一个Controller类以及派生出的三个子类(listController对应显示留言功能、postController对应发表留言功能以及deleteController对应删除留言功能)。
复制PHP内容到剪贴板
PHP代码:
<?php
//! Controller
/
*** 控制器将$_GET['action']中不同的参数(list、post、delete)
* 对应于完成该功能控制的相应子类
*/
class Controller {
var $model; // Model 对象
var $view; // View 对象
//! 构造函数
/
*** 构造一个Model对象存储于成员变量$this->model;
*/
function __construct (& $dao) {
$this->model=& new Model($dao);
}
function getView() { //获取View函数
//返回视图对象view
//对应特定功能的Controller子类生成对应的View子类的对象
//通过该函数返回给外部调用者
return $this->view;
}
}
//用于控制显示留言列表的子类
class listController extends Controller{ //extends表示继承
function __construct (& $dao) {
parent::__construct($dao); //继承其父类的构造函数
//该行的含义可以简单理解为:
//将其父类的构造函数代码复制过来
$this->view=& new listView($this->model);
//创建相应的View子类的对象来完成显示
//把model对象传给View子类供其获取数据
}
}
//用于控制添加留言的子类
class postController extends Controller{
function __construct (& $dao, $post) {
parent::__construct($dao);
$this->view=& new postView($this->model, $post);
//$post的实参为$_POST数组
//表单中的留言项目存储在该系统数组中
}
}
//用于控制删除留言的子类
class deleteController extends Controller{
function __construct (& $dao, $id) {
parent::__construct($dao);
$this->view=& new deleteView($this->model, $id);
}
}
>大体浏览之后,你一定打算开始仔细研究它了吧,别急,为了心中有数,我们先从宏观着眼,先看看总入口index.php是如何调用Controller的:
复制PHP内容到剪贴板
PHP代码:
<html>
<head>
<meta çäºä»¶é©±å¨çæ¡æ¶ï¼Pradoï¼æ¯æ类似RubyOnRailsçå¿«éå¼åçæ¡æ¶ï¼Cakeççï¼è¶³å¤æ»¡è¶³ä½ çåºç¨éæ±ã
6.PHP5å·²ç»ææççé¢å对象ä½ç³»ï¼è½å¤éåºåºæ¬çé¢å对象è¦æ±ãéåå¼å大å项ç®ã
7.ææçç社åºæ¥æ¯æPHPçå¼åã
8.ç®åå·²ç»å¾å¤å¤§ååºç¨é½æ¯ä½¿ç¨PHPï¼æ¯å¦æ·å®ç½ãYahooããSinaçç大åé¨æ·ï¼å¾å¤éç¨PHPæ¥ä½ä¸ºä»ä»¬çå¼åè¯è¨ï¼æ以大åé¨æ·é½è½å¤éç¨å®ï¼ææ³è¶³å¤è½å¤ä½ ç使ç¨äºã
9.æå¾å¤å¼æºçæ¡æ¶æå¼æºçç³»ç»å¯ä»¥ä½¿ç¨ï¼æ¯å¦æ¯è¾ç¥åçå¼æºæ¡æ¶æZendFrameworkãCakePHPãCodeIgniterãsymfonyçï¼å¼æºè®ºåæDiscuz!ãPhpwindçï¼å¼æºå客WordPressï¼å¼æºç½åºç³»ç»å¦EcshopãShopExçï¼å¼æºçSNSç³»ç»å¦UCHomeãThinkSNSçã
PHPè¯è¨çç®ä»PHPè¯è¨çç®ä»
æ们ç¥éç½ç«å¼åï¼ç½ç«å¨æè¯è¨æå¾å¤ï¼æ¯å¦aspï¼asp.netï¼phpï¼jspãè¿é为ä½éæ©PHPè¯è¨æ¥è®¨è®ºï¼ä¸æ¥æå¦çå°±æ¯è¿ä¸ªè¯è¨ï¼æ¯è¾çæä¸ç¹ï¼äºæ¥ä»¥ç®åå¸åºçéæ±éèè¨PHPç®æ¯å¾æµè¡çãä¸é¢æå°±æ¥å ·ä½ä»ç»ä¸ä¸è¿é¨è¯è¨ã
å®ä¹ï¼
PHPåå§ä¸ºPersonalHomePageç缩åï¼å·²ç»æ£å¼æ´å为"PHP:HypertextPreprocessor"ã注æä¸æ¯âHypertextPreprocessorâç缩åï¼è¿ç§å°å称æ¾å°å®ä¹ä¸çåæ³è¢«ç§°ä½éå½ç¼©åãPHPäºå¹´ç±RasmusLerdorfå建ï¼ååå¼å§æ¯RasmusLerdorf为äºè¦ç»´æ¤ä¸ªäººç½é¡µèå¶ä½ç'ä¸ä¸ªç®åçç¨Perlè¯è¨ç¼åçç¨åºãè¿äºå·¥å ·ç¨åºç¨æ¥æ¾ç¤ºRasmusLerdorfç个人履åï¼ä»¥åç»è®¡ç½é¡µæµéãåæ¥åç¨Cè¯è¨éæ°ç¼åï¼å æ¬å¯ä»¥è®¿é®æ°æ®åºãä»å°è¿äºç¨åºåä¸äºè¡¨åç´è¯å¨æ´åèµ·æ¥ï¼ç§°ä¸ºPHP/FIãPHP/FIå¯ä»¥åæ°æ®åºè¿æ¥ï¼äº§çç®åçå¨æç½é¡µç¨åºã
PHPçç¹æ§ï¼
1.PHPç¬ç¹çè¯æ³æ··åäºCãJavaãPerl以åPHPèªåæ°çè¯æ³ã
2.PHPå¯ä»¥æ¯CGIæè Perlæ´å¿«éçæ§è¡å¨æç½é¡µââå¨æ页é¢æ¹é¢ï¼ä¸å ¶ä»çç¼ç¨è¯è¨ç¸æ¯ï¼
PHPæ¯å°ç¨åºåµå ¥å°HTMLææ¡£ä¸å»æ§è¡ï¼æ§è¡æçæ¯å®å ¨çæhtmLæ è®°çCGIè¦é«è®¸å¤;
PHPå ·æé常强大çåè½ï¼ææçCGIçåè½PHPé½è½å®ç°ã
3.PHPæ¯æå ä¹æææµè¡çæ°æ®åºä»¥åæä½ç³»ç»ã
4.æéè¦çæ¯PHPå¯ä»¥ç¨CãC++è¿è¡ç¨åºçæ©å±!
PHPçä¼å¿ï¼
ä¸ãè¯æ³ç®åææãPHP主è¦æ¯è¢«ç¨æ¥åWebå¼åï¼åºç¨ç¯å¢æ¯è¾å纯ï¼æ以è¯æ³ç®åææ!
äºãæ¦å¿µæ§ç¥è¯å°ãè¾å°æ¶ååºå±æä½ï¼è¯è¨çå¾å¤åºå±çç»èé®é¢æ éææ¡ï¼æ以ç论æ¦å¿µè¾å°ï¼é常æå¦æç¨ã
ä¸ãå®ç¨æ§æ强ãPHPæä¾äºå¾å¤å®ç¨èä¸æ¹ä¾¿çå ç½®å½æ°ï¼è®©ä»£ç æ´å¥½åãå¦å¤PHPææççå¼åæ¡æ¶ï¼å¸®ä½ å¿«é建ç«ï¼è½»æ¾ä¸æã
åãæé«æç¼ç¨è¯è¨ãPHP主è¦æ¯åºç¨äºwebå¼åé¢åï¼å ¶æ§è¡æçè¦è¿é«äºå ¶ä»ç¼ç¨è¯è¨ï¼å¹¶ä¸PHPè¿å¯ä»¥æ§è¡ç¼è¯å代ç ï¼ç¼è¯å¯ä»¥è¾¾å°å å¯åä¼å代ç è¿è¡ï¼ä½¿ä»£ç è¿è¡æ´å¿«ã
äºãæéå端å端移å¨ç«¯ãPHPä¸ä» å¯ä»¥å®æå端页é¢ä¸å端平å°çæ建ï¼å¹¶ä¸å¯ä»¥éè¿æ··åå¼å¼åï¼å®æ移å¨ç«¯åºç¨çå¼åä»»å¡ï¼å®ç¾éé iOSä¸Androidæä½ç³»ç»ï¼ä¸æå¨æï¼å ¨é¨æå®!
å ãç½ç«å¼åé¦éè¯è¨ãå½å å¤å大ç¥åä¼ä¸ï¼å¦è°·æãfacebookãé¿éå·´å·´ãç¾åº¦ãæ°æµªçå½å å¤ä¸çº¿äºèç½ä¼ä¸çç½ç«ï¼å为PHPææ¯å¼åçï¼åªå 为PHPæ¯åç½ç«é¦éè¯è¨ï¼æ²¡æä¹ä¸!
phpæ¯ä»ä¹PHPå±äºç¼ç¨è¯è¨çä¸ç§ï¼æ¯ä¸ç§ç¨äºå建å¨æå交äºå¼HTMLç½é¡µçèæ¬è¯è¨ã
ç¼ç¨è¯è¨æ¯ä¸ç§è¢«æ ååç交æµæå·§ï¼ç¨æ¥å计ç®æºååºæ令ï¼å®ä¹è®¡ç®æºç¨åºï¼è®©ç¨åºåè½å¤åç¡®å°å®ä¹è®¡ç®æºæéè¦ä½¿ç¨çæ°æ®ï¼å¹¶ç²¾ç¡®å°å®ä¹å¨ä¸åæ åµä¸æåºå½éåçè¡å¨çä¸ç§è®¡ç®æºè¯è¨ãèç¼ç¨è¯è¨å å«å¾å¤ç»åï¼èPHPå°±æ¯å ¶ä¸ä¸ç§ã
å®ç主è¦ç¹æ§ä¸ºï¼
â å¼æºæ§åå è´¹æ§
ç±äºPHPç解éå¨çæºä»£ç æ¯å ¬å¼çï¼æ以å®å ¨ç³»æ°è¾é«çç½ç«å¯ä»¥èªå·±æ´æ¹PHPç解éç¨åºãå¦å¤ï¼PHPè¿è¡ç¯å¢ç使ç¨ä¹æ¯å è´¹çã
â¡å¿«æ·æ§
PHPæ¯ä¸ç§é常容æå¦ä¹ å使ç¨çä¸é¨è¯è¨ï¼å®çè¯æ³ç¹ç¹ç±»ä¼¼äºCè¯è¨ï¼ä½å没æCè¯è¨å¤æçå°åæä½ï¼èä¸åå å ¥äºé¢å对象çæ¦å¿µï¼åå ä¸å®å ·æç®æ´çè¯æ³è§åï¼ä½¿å¾å®æä½ç¼è¾é常ç®åï¼å®ç¨æ§å¾å¼ºã
â¢æ°æ®åºè¿æ¥ç广æ³æ§
PHPå¯ä»¥ä¸å¾å¤ä¸»æµçæ°æ®åºå»ºç«èµ·è¿æ¥ï¼å¦MySQLãODBCãOracleçï¼PHPæ¯å©ç¨ç¼è¯çä¸åå½æ°ä¸è¿äºæ°æ®åºå»ºç«èµ·è¿æ¥çï¼PHPLIBå°±æ¯å¸¸ç¨ç为ä¸è¬äºå¡æä¾çåºåºã
â£é¢åè¿ç¨åé¢å对象并ç¨
å¨PHPè¯è¨ç使ç¨ä¸ï¼å¯ä»¥åå«ä½¿ç¨é¢åè¿ç¨åé¢å对象ï¼èä¸å¯ä»¥å°PHPé¢åè¿ç¨åé¢å对象两è ä¸èµ·æ··ç¨ï¼è¿æ¯å ¶å®å¾å¤ç¼ç¨è¯è¨æ¯åä¸å°çã
ä¼ç¹
â æµè¡ï¼å®¹æä¸æ
PHPæ¯ç®åææµè¡çç¼ç¨è¯è¨ï¼è¿æ¯åº¸ç½®çãå®é©±å¨å ¨çè¶ è¿2亿å¤ä¸ªç½ç«ï¼æå ¨çè¶ è¿.7%çå ¬å ±ç½ç«å¨æå¡å¨ç«¯éç¨PHPãPHP常ç¨çæ°æ®ç»æé½å ç½®äºï¼ä½¿ç¨èµ·æ¥æ¹ä¾¿ç®åï¼ä¹ä¸ç¹é½ä¸å¤æï¼è¡¨è¾¾è½åç¸å½çµæ´»ã
â¡å¼åèä½å¾å¤
å¨æå¡å¨ç«¯çç½ç«ç¼ç¨ä¸PHPä¼æ´å®¹æ帮å©ä½ æ¾å°å·¥ä½ãå¾å¤äºèç½ç¸å ³ä¼ä¸é½å¨ä½¿ç¨PHPå¼åæ¡æ¶ï¼æ以å¯ä»¥è¯´å¸åºå¯¹PHPçå¼åç¨åºåçéæ±è¿æ¯æ¯è¾å¤§çã
â¢ä»ç¶å¨ä¸æåå±
PHPå¨ä¸æå ¼å®¹ç类似closuresåå½å空é´çææ¯ï¼åæ¶å ¼é¡¾æ§è½åå½ä¸æµè¡çæ¡æ¶ãçæ¬æ¯7ä¹åï¼ä¸ç´å¨æä¾æ´é«æ§è½çåºç¨ã
â£å¯æ¤å ¥æ§å¼º
PHPè¯è¨å¨è¡¥ä¸æ¼æ´å级è¿ç¨ä¸ï¼æ ¸å¿é¨åæ¤å ¥ç®åæè¡ï¼ä¸é度快ã
â¤æå±æ§å¼º
PHPè¯è¨å¨æ°æ®åºåºç¨è¿ç¨ä¸ï¼å¯ä»¥ä»æ°æ®åºè°ååç±»æ°æ®ï¼æ§è¡æçé«
phpæ¯ä»ä¹ææä»ä¹æ¯phpPHPæ¯æè¶ ææ¬é¢å¤çå¨ï¼æ¯ä¸ç§éç¨å¼æºèæ¬è¯è¨ãPHPæ¯å¨æå¡å¨ç«¯æ§è¡çèæ¬è¯è¨ï¼ä¸Cè¯è¨ç±»ä¼¼ï¼æ¯å¸¸ç¨çç½ç«ç¼ç¨è¯è¨ãå ¶ä¸ç¨æ§éæ¸å¨åºç¨è¿ç¨ä¸æ¾ç°ï¼å ¶ææ¯æ°´å¹³çä¼å£ä¸å¦å°ç´æ¥å½±åç½ç«çè¿è¡æçãå ¶ç¹ç¹æ¯å ·æå ¬å¼çæºä»£ç ï¼å¨ç¨åºè®¾è®¡ä¸ä¸éç¨åè¯è¨ç¸ä¼¼æ§è¾é«ï¼å æ¤å¨æä½è¿ç¨ä¸ç®åææï¼å¯æä½æ§å¼ºãåæ¶ï¼PHPè¯è¨å ·æè¾é«çæ°æ®ä¼ éå¤çæ°´å¹³åè¾åºæ°´å¹³ï¼å¯ä»¥å¹¿æ³åºç¨å¨Windowsç³»ç»ååç±»Webæå¡å¨ä¸ã
å¦ææ°æ®éè¾å¤§ï¼PHPè¯è¨è¿å¯ä»¥æ宽é¾æ¥é¢ï¼ä¸åç§æ°æ®åºç¸è¿ï¼ç¼è§£æ°æ®åå¨ãæ£ç´¢åç»´æ¤ååã