PHP 百分网手机站

php知识框架总结

时间:2018-05-20 17:25:40 PHP 我要投稿

php知识框架总结

  篇一:php基础知识点总结

php知识框架总结

  PHP语言基础简单整理

  1.开始结束标记

  2.定义变量:$变量名 例:$str="锦清笋";不需要指明数据类型

  3.输出语句:

  (1)echo "hello world!";---echo命令

  (2)print();输出语句,是函数,有返回值。输出成功返回1,失败返回0。

  (3)printf();格式化输出字符串。例:printf("%d,%f",12,12.3);

  (4)sprintf();格式化拼接字符串,不是输出语句,只能将字符串拼接。

  (5)print_r();输出数组、对象等复合数据类型

  4.数据类型:

  (1)简单数据类型:

  Boolean 布尔型

  string 字符串型

  integer 整型

  float 浮点型

  (2)复合数据类型:

  array 数组

  object 对象

  (3)特殊数据类型:

  resource 资源

  null 空值

  5.数据类型转换:

  在变量前加上括号括起来的类型名称即可。

  6.检测数据类型:

  is_bool 检查变量是否是布尔类型

  is_string ....

  is_float或is_double ....

  is_integer 或 is_int ....

  is_null ....

  is_array ....

  is_object ....

  is_numeric 检测变量是否为数组或由数字组成的字符串

  7.声明和使用常量:

  定义语法:define(‘PRICE’,100);

  echo PRICE;

  8.变量作用域:

  局部变量:即在函数的内部定义的变量,其作用域是所在的函数

  全局变量:即被定义在所有函数以外的变量,其作用域是整个php文件,但是在用户定义的函数内部不可用。想在用户定义的函数内部使用全局变量,要使用global关键词声明。 例:$a=123;

  function test()

  {

  global $a;

  echo $a;

  }

  静态变量:能够在函数调用结束后仍保留变量值,当再次回到其作用域时,又可以继续使用原来的值。使用静态变量时,先要用关键字static来声明变量,需要把关键字static放在要定义的变量之前。

  9.预定义变量:通过预定义变量可以获取用户会话、用户操作系统的环境和本地操作系统的环境等信息。如:

  $GLOBALS,$_SERVER,$_GET,$_POST,$_REQUEST,$_COOKIE,$_SESSION,$_FILES.

  10.字符串运算符:句号:“.”;连接字符串

  特别是拼写sql语句时:".$变量名."

  11.逻辑运算符:逻辑异或:^或xor 当一个为真,一个为假时,结果为真,其他为假。 恒等:===

  优先级:||在and之前,or在and之后。

  12.@错误屏蔽:@错误屏蔽运算符可以对程序中出现错误的表达式进行操作,进而对错误进行屏蔽,其使用的方法就是在错误的表达式前加“@”即可。它只是对错误信息进行屏蔽,并没有真正解决错误。

  13.定义和调用函数:函数名不区分大小写

  function test($var1,$var2)

  {

  函数体

  }

  test($var1,$var2);

  函数的返回值:使用return返回单个值,和使用list()语言结构返回多个值。

  传值调用:$变量名

  传址调用:&$变量名

  14.Form表单:

  两种提交方式:get:将表单数据当做url的一部分传过去;url格式:http://地址:端口/目录/文件?var1=value1&...varn=valuen最长1024k

  post:相比get而言,更安全,并不会导致因数据过长而引起url的数据丢失

  使用超链接传值时必须用get来接收:">ADD">ADD">">ADD 接收:$uid=$_GET["uid"];

  注意:的格式只有在没有判断语句时才能使用。

  对表单传递的变量进行编码和解码:PHP中实现对查询字符串进行URL编码可以通过函数urlencode()实现,该函数的使用格式如下:string urlencode(string str);对URL编码后的查询字符串进行解码,可以通过urldecode()函数实现,该函数的使用格式如下:string urldecode(string str);

  15.PHP连接数据库:

  步骤: 一、建立连接------mssql_connect(server,uid,pwd);

  二、指定database-------mssql_select_db(databasename);

  三、执行sql------mssql_query($sql,$link);

  四、处理记录集-------资源类型数据,格式:bof---数据---eof

  五、以特定格式读取数据-----mssql_fetch_array()....

  六、释放相关资源、关闭连接------mssql_free_result($result);mssql_close();

  16.数组:php的数组由键值和value值组成

  定义:$array = array("键值"=>"value","键值"=>"value","键值"=>"value");如果不给键值赋值,默认从0开始的int值

  相关函数:(1)in_array("值",数组名); 返回bool型-----查看数组中是否存在某value值

  (2)array_key_exists("key值",数组名); 返回bool型-----查看数组中是否存在某键值

  (3)array_keys(数组名);---将数组键值返回出来形成一个新数组,此键值作为新数组的value值

  (4)array_values(数组名);---将数组value值返回出来形成一个新数组,此值作为新数组的value值

  (5)key(数组名);----返回当前指针指向的元素key值

  (6)current(数组名);----返回当前指针指向的元素value值

  (7)next(数组名);----挪动当前数组指针到下一步

  (8)reset(数组名);----恢复数组指针,指向第0个元素

  (9)end(数组名);----将指针挪向最后一个元素

  (10)prev(数组名);----将指针向前挪动一位

  (11)foreach(数组名 as $key=>$value)

  {

  $key是键值,$value是value值,实现数组遍历

  }

  (12)each(数组名);----将当前数组元素依次取出(自动挪动指针)并放到一个新的数组中

  (13)array_shift(数组名);----返回数组中第一个元素值

  (14)array_pop(数组名);----返回数组最后一个元素值

  (15)array_push(数组名,value);----向数组中追加元素

  (16)array_unshift(数组名,value);----在数组最前面添加元素

  (17)array_pad(数组名,数组长度,value);----向数组中追加多个元素,对数组副本操作,不改变原数组,返回一个新数组

  (18)count();----返回个数

  (19)array_unique(数组名);----去掉数组中重复部分,操作数组副本,不改变原数组,返回新数组

  (20)sort(数组名);----从小到大升序排列数组value值,一般针对int型value值,返回bool型,成功返回true

  (21)rsort(数组名);----从大到小,逆序排列数组value值

  (22)array_combine(数组1,数组2);----将数组1的value值作为key,数组2的value值作为value值,形成一个新数组

  (23)array_merge(数组1,数组2,数组3...);----合并多个数组,将多个数组value值依次合并,合为一个数组

  (24)array_slice(数组名,int,int);----从目标数组截取元素,形成一个新数组。开始位置为第二个参数,结束位置为第三个参数。若第三个参数不写,则默认是截取到最后。

  (25)array_splice();----用法同array_slice();但是其截取部分从原数组中删除

  (26)explode("字符依据",目标字符串);----将字符串按照一定的依据拆分成数组

  (27)implode("字符依据",目标数组);----将数组元素按照依据组合成一个字符串

  (28)range(mixed low,mixed high[number step]);----生成数组,例:range(1,100,8);---即从1到100,每8位取一个数,组成一个数组

  (29)shuffle(数组名);----用于将数组进行随机排序

  (30)array_sum(数组名);----对数值型数组元素值进行求和

  (31)array_chunk(数组名,int);----分割目标数组,返回一个新数组,其中数组的每个元素都是一个一维数组,int参数为分割成的一维数组的长度

  17.Cookie和会话控制:

  Cookie是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie是由Web服务器保存在客户机上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web站点都可以访问Cookie信息。

  存在server端的是session,存在client端的是cookie,它们用来存储全局变量。 设定Cookie值:setcookie("名","值");

  通过Cookie数组取值:$_cookie["名"];

  设置生成期:setcookie("名","值",time()+1800);生成期为当前时间加1800秒之后。

  删除cookie: setcookie("名","",time()-3600);中间值设置为空,并将当前时间减去3600秒。 Cookie数组:setcookie("名[key]","值"); 使用foreach读取。

  在PHP中可以通过$_COOKIE预定义变量访问Cookie的值。如果设置了php.ini中的register_long_arrays,那么就能够应用$_COOKIE和$HTTP_COOKIE_VARS;如果在php.ini中还设置了register_globals,那么就可以在PHP中作为全局变量使用各个Cookie值。但是,更改php.ini中的两个文件设置,容易对PHP的安全构成威胁,不推荐使用该方法,建议使用更新的$_COOKIE。

  会话ID的传送

  会话ID的传送有两种方式,一种是Cookie方式,另一种是URL方式。

  Cookie传送方式:

  这是最简单的会话方式,但是有些客户可能限制使用Cookie,如果客户限制使用Cookie的条件下,仍要继续工作,那就要通过其他方式来实现了。

  URL传送方式:

  在该方式中,URL本身用来传送会话,会话标志被简单地附加到URL的尾部,或者作为窗体中的一个变量来传递。例:">ADD">ADD">">ADD

  会话ID的生成:

  PHP的会话函数会自动处理ID的创建,但也可以通过手工方式创建会话ID。它必须是不容易被人猜出来的,否则有安全隐患。

  一般推荐生成会话ID使用随机数发生器函数srand(),函数声明如下:

  srand((double)microtime()*1000000);

  在调用该函数后,要想生成一个唯一的会话ID,还必须使用下面的语句:

  md5(unique(rand()));

  Session会话:

  创建会话的步骤:启动一个会话,注册会话变量,使用会话变量和注销会话变量。

  (1)启动一个会话:》通过session_start();函数创建会话,函数声明为:bool session_start(void);

  》通过设置php.ini自动创建会话:设置php.ini中的session.auto_start选项,激活该选项即可自动创建会话(配置值改为1),但是使用该方法启动auto_start会导致无法使用对象作为会话变量。

  (2)注册会话变量:会话变量被启动后,全部保存在数组$_session中。通过数组$_session,直接给该数组提添加一个元素即可创建一个会话变量: $_session[session_name]=session_value;

  (3)使用会话变量:

  if(!empty($_session[session_name])){$myvalue=$_session[session_name]}

  (4)注销会话变量:注销某个session成员:unset($_session[session_name])

  注销所有会话功能:$_session=array();然后使用session_destory();函数清除会话ID。

  18.字符串处理:

  (1)获取字符串长度:int strlen($str);

  (2)将指定字符串转换成大写:strtoupper($str);

  (3)将首字母转换成大写:ucfirst($str);

  (4)字符串与HTMl相互转换:htmlspecialchars($str);----将字符串中某些特殊字符转化成html格式

  (5)去除字符串的空格:trim()---去两遍空格,ltrim()----去左边空格,rtrim()----去右边空格

  (6)substr_count($str,"value");查询某字符在目标字符串中出现的个数

  (7)strpos($str,"value");----定位字符位置,返回int

  (8)防止单引号破坏sql语句:自动转义函数:addslashes();

  <?php

  $str = "Is your name O'reilly?";

  // 输出:Is your name O'reilly?

  echo addslashes($str);

  ?>

  (9)截取字符串:substr($str,start_int,end_int);---return $newstr

  (10)填充字符串:string str_pad ( string input, int pad_length [, string pad_string [, int pad_type]] )

  例:<?php

  $input = "Alien";

  echo str_pad($input, 10); // produces "Alien " echo str_pad($input, 10, "-=", STR_PAD_LEFT); // produces "-=-=-Alien"

  echo str_pad($input, 10, "_", STR_PAD_BOTH); // produces "__Alien___"

  echo str_pad($input, 6 , "___"); // produces "Alien_"

  ?>

  (11)字符串的比较:int strcmp ( string str1, string str2 )----按逐个字符的ascll码进行比较,如果返回等于0,则相等;大于0,则str1大于str2;小于0,则str1小于str2。

  (12)数字字符串的格式化:string number_format ( float number [, int decimals [, string dec_point, string thousands_sep]] )

  该函数可以有1个,2个,或4个参数,但不能使三个。decimals意思是取小数点后几位,dec_point用来代替小数点,thousands_sep用来代替千位分隔符。

  (13)查找和替换:

  查找:string strstr ( string haystack, string needle )

  例:<?php

  $email = 'user@example.com';

  $domain = strstr($email, '@');

  echo $domain; // prints @example.com

  ?>

  替换:mixed str_replace ( mixed search, mixed replace, mixed subject [, int &count] )----区分大小写

  篇二:php重要知识点总结(PHP网络开发必背)

  PHP网站开发必用知识点总结,函数一览,开发必背

  魔术方法

  __construct() 当实例化一个对象的时候,这个对象的这个方法首先被调用。 __destruct() 当删除一个对象或对象操作终止的时候,调用该方法。

  __get() 当试图读取一个并不存在的属性的时候被调用。

  __set() 当试图向一个并不存在的属性写入值的时候被调用。

  __call() 当试图调用一个对象并不存在的方法时,调用该方法。

  __toString() 当打印一个对象的时候被调用

  __clone() 当对象被克隆时,被调用

  __isset()

  __unset()

  __autoload($classname)

  __sleep()

  __wakeup()

  系统常量

  __FILE__ 当前文件名

  __LINE__ 当前行数

  __FUNCTION__ 当前函数名

  __CLASS__ 当前类名

  __METHOD__ 当前对象的方法名

  PHP_OS 当前系统

  PHP_VERSION php版本

  DIRECTORY_SEPARATOR 根据系统决定目录的分隔符 /

  PATH_SEPARATOR 根据系统决定环境变量的目录列表分隔符 ; :

  E_ERROR 1

  E_WARNING 2

  E_PARSE 4

  E_NOTICE 8

  M_PI 3.141592

  $_SERVER

  $_ENV 执行环境提交至脚本的变量

  $_GET

  $_POST

  $_REQUEST

  $_FILES

  $_COOKIE

  $_SESSION

  $_GLOBALS

  输出

  echo //Output one or more strings

  print //Output a string

  print_r() //打印关于变量的易于理解的信息。

  var_dump() //打印变量的相关信息

  var_export() //输出或返回一个变量的字符串表示

  printf("%.1f",$num) //Output a formatted string

  sprintf() //Return a formatted string

  编码转换

  string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] ) iconv();

  时间

  date_default_timezone_set("PRC");

  date("Y-m-d H:i:s");

  time();

  date("Y-m-d H:i:s",time()+3600)

  ini_set('date.timezone', 'PRC');

  msec sec microtime() 以秒返回时间戳 explode(' ', microtime())

  错误处理

  @1/0

  error_reporting(E_ALL) 显示所有错误

  error_reporting(0)

  trigger_error("Cannot divide by zero", E_USER_ERROR);

  try

  {

  throw new Exception("执行失败");

  }

  catch (Exception $ex)

  {

  echo $ex;

  }

  字符串处理

  string trim("eee ") trim ('ffffe','e') //ltrim rtrim

  array explode(".", "fff.ff.f") 按指定字符切割

  string implode(".", $array) 别名:join 把数组值数据按指定字符连接起来

  array str_split("eeeeeeee",4) 按长度切割字符串

  array split("-","fff-ff-f") 按指定字符切割

  int strlen('ffffffff') 取字符长度

  string substr ( string $string , int $start [, int $length ] )

  substr($a,-2, 2) 截取字符

  int substr_count($text, 'is') 字符串出现的次数

  string strstr($text, 'h') 第一次出现h后的字符串 //别名:strchr

  int strpos($text, 'h') 第一次出现h的位置

  strrpos();最后一次出现h的位置

  str_replace('a', 'ttt', $t) 把$t里的'a'替换为'ttt'

  strtr($t,'is','ppp') 把$t中'is'替换成'ppp'

  strtr("hi all, I said hello", array("hello" => "hi")) 把'hello'转换成'hi'

  string md5_file('1.txt',false) 文件数据md5加密

  int strcmp(string str1, string str2) 字符串比较

  int strcasecmp(string str1, string str2) 忽略大小写

  string str_pad($i, 10, "-=", STR_PAD_LEFT) 在原字符左边补'-=',直到新字符串长度为10

  STR_PAD_RIGHT

  STR_PAD_BOTH

  string str_repeat('1', 5) 重复5个1

  void parse_str('id=11'); echo $id; 将字串符解析为变量

  array preg_grep("/^(d+)?.d+$/", array(11.2,11,11.2)) 匹配数据

  array preg_split ("/[s,]+/", "hypertext language,programming"); 按指定的字符切割 array pathinfo(string path [, int options]) 返回文件路径的信息

  string basename ( string path [, string suffix] ) 返回路径中的文件名部分

  string dirname ( string path ) $_SERVER[PHP_SELF] 返回路径中的目录部分 string nl2br("foo isn't bar") "foo isn't
bar" 把换行转成

  string chr ( int ascii ) *

  mixed str_word_count ( string string [, int format [, string charlist]] )

  string str_shuffle ('abc') 打乱字符串顺序

  string strrev($str) * 翻转一个字符串

  string strtolower($str) * 将字符串 $str 的字符全部转换为小写的

  string strtoupper($str) * 将字符串 $str 的字符全部转换为大写的

  string ucfirst ($str) * 将字符串 $str 的第一个单词的首字母变为大写。 string ucwords($str) * 将字符串 $str 的每个单词的首字母变为大写。

  string addslashes("I'm") I'm 使用反斜线引用字符串 这些字符是单引号(')、双引号(")、反斜线()与 NUL(NULL 字符)

  string stripcslashes("I'm") I'm 将用addslashes()函数处理后的字符串返回原样

  strip_tags("

tt

", '

') 去除html、xml、php标记,第二个参数用来保留标记 string urlencode(string str)

  string urldecode(string str)

  string htmlspecialchars("Test", ENT_QUOTES) 转换特殊字符为HTML字符编码

  Test

  ENT_COMPAT –对双引号进行编码,不对单引号进行编码

  ENT_QUOTES –对单引号和双引号进行编码

  ENT_NOQUOTES –不对单引号或双引号进行编码

  string htmlentities('

ff

', ENT_QUOTES) 转换特殊字符为HTML字符编码,中文会转成乱码

  数组处理

  int count( mixed var [, int mode] ) 别名:sizeof() 取数组长度

  string implode(".", $array) 别名:join 把数组值数据按指定字符连接起来 array explode(".", "fff.ff.f") 按指定字符切割

  array range(0, 6, 2) 返回数组 array(0,2,4,6) 第一个参数为起使数,第二个参数为结束数,第三个参数为数据增加步长

  int array_push($a, "3", 1) 把'3'、'1'压入$a,将一个或多个单元压入数组的末尾(入栈),第二个参数开始就是压入的数据

  void unset ( mixed var [, mixed var [, ...]] )

  array array_pad ($a, 5, 's')用's'将数组填补到指定长度

  bool shuffle ( array $array ) 将数组打乱

  mixed array_rand ( array input [, int num_req] )从数组中随机取出一个或多个单元的索引或键名

  array array_count_values ( array input )统计数组中所有的值出现的次数

  array array_combine ( array keys, array values ) 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值

  bool array_key_exists ( mixed key, array search )检查给定的键名或索引是否存在于数组中

  mixed array_search ( mixed needle, array haystack [, bool strict] )在数组中搜索给定的值,如果成功则返回相应的键名

  bool is_array ( mixed var )

  bool in_array ( mixed needle, array haystack [, bool strict] )检查数组中是否存在某个值 number array_sum ( array array )计算数组中所有值的和

  array array_unique ( array array )移除数组中重复的值

  mixed reset ( array &array )将数组的内部指针指向第一个单元

  mixed current ( array &array )

  mixed next ( array &array )

  mixed prev ( array &array )

  mixed end ( array &array )

  mixed key ( array &array )

  array array_keys ( array input [, mixed search_value [, bool strict]] ) 返回数组中所有的键名

  array array_values ( array input ) 返回数组中所有的值

  bool print_r ( mixed expression [, bool return] )

  void var_dump ( mixed expression [, mixed expression [, ...]] )

  int array_unshift ( array &array, mixed var [, mixed ...] )在数组开头插入一个或多个单元 mixed array_shift ( array &array )将数组开头的单元移出数组

  mixed array_pop ( array &array )将数组最后一个单元弹出(出栈)

  array array_splice ( array $input, int offset [, int length [, array replacement]] ) 把数组中的一部分去掉并用其它值取代

  array array_merge ( array array1 [, array array2 [, array ...]] )合并一个或多个数组 array array_flip ( array trans )交换数组中的键和值

  int extract( array var_array [, int extract_type [, string prefix]] ) 从数组中将变量导入到当

  前的符号表

  array compact ( mixed varname [, mixed ...] ) 建立一个数组,包括变量名和它们的值 bool sort ( array &array [, int sort_flags] )从最低到最高重新安排

  bool natsort($a) 用“自然排序”算法对数组排序

  bool rsort ( array &array [, int sort_flags] )对数组进行逆向排序(最高到最低) bool asort ( array &array [, int sort_flags] )对数组进行排序并保持索引关系

  bool arsort ( array &array [, int sort_flags] ) 对数组进行逆向排序并保持索引关系 bool ksort ( array &array [, int sort_flags] )对数组按照键名排序

  bool krsort ( array &array [, int sort_flags] )对数组按照键名逆向排序

  array array_filter ( array input [, callback callback] ) 用回调函数过滤数组中的单元

  bool array_walk ( array &array, callback funcname [, mixed userdata] ) 对数组中的每个成员应用用户函数

  array array_map ( callback callback, array arr1 [, array ...] )将回调函数作用到给定数组的单元上

  array array_fill ( int start_index, int num, mixed value ) 用给定的值填充数组

  array_fill(5, 3, 'a')-->array(5=>'a',6=>'a',7=>'a')

  array array_chunk ( array input, int size [, bool preserve_keys] )将一个数组分割成多个

  其他

  isset() 变量是否存在

  boolean empty() 检查变量是否存在,并判断值是否为非空或非0

  void unset() 销毁变量

  header('Content-Type: text/html; charset=utf-8');

  method_exists($obj, $method) 判断对象的方法是否可用

  file_exists($file) 判断文件是否存在

  function_exists();

  class_exists($class_name);

  gettype();获取数据类型

  set_magic_quotes_runtime() 0 for off, 1 for on 当遇到反斜杆、单引号,将会自动加上一个反斜杆,保护系统和数据库的安全

  ini_set();

  安全

  function strReplace($str)

  {

  $strResult = $str;

  if(!get_magic_quotes_gpc())//判断设置是否开启

  {

  $strResult = addslashes($strResult);//转换sql语句特殊字符

  }

  return $strResult;

  }

  篇三:php框架分析

  PHP框架

  本文来自国外的一个PHP技术人员网站,总结了国外的十个目前最流行的PHP MVC框架。具体排名顺序未必准确,还有些知名框架,如Kohana等也没有提及。不过仍可以做为一篇不错的参考。

  以下为十个目前最流行的基于MVC设计模式的PHP框架。

  1. Yii

  Yii是一个基于组件的高性能的PHP的框架,用于开发大规模Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从 MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主体化,I18N和L10N,Yii提供了 今日Web 2.0应用开发所需要的几乎一切功能。而且这个框架的价格也并不太高。事实上,Yii是最有效率的PHP框架之一。

  2. CodeIgniter

  CodeIgniter是一个应用开发框架——一个为建立PHP网站的人们所设计的工具包。其目标在于快速的开发项目:它提供了丰富的库组以完成常 见的任务,以及简单的界面,富有条理性的架构来访问这些库。使用CodeIgniter开发可以往项目中注入更多的创造力,因为它节省了大量编码的时间。

  3. CakePHP

  CakePHP是一个快速开发PHP的框架,其中使用了一些常见的设计模式如ActiveRecord,Association Data Mapping,Front Controller以及MVC。其主要目标在于提供一个令任意水平的PHP开发人员都能够快速开发web应用的框架,而且这个快速的实现并没有牺牲项目 的弹性。

  4. PHPDevShell

  PHPDevShell是一个开源(GNU/LGPL)的快速应用开发框架,用于开发不含Javascript的纯PHP。它有一个完整的GUI管 理员后台界面。其主要目标在于开发插件一类的基于管理的应用,其中速度、安全、稳定性及弹性是最优先考虑的重点。其设计形成了一个简单的学习曲线,PHP 开发者无需学习复杂的新术语。PHPDevShell的到来满足了开发者们对于一个轻量级但是功能完善,可以无限制的进行配置的GUI的需求。

  5. Akelos

  Akelos PHP框架是一个基于MVC设计模式的web应用开发平台。基于良好的使用习惯,使用它可以完成如下任务:

  方便的使用Ajax编写views

  通过控制器管理请求(request)及响应(response)

  管理国际化的应用

  使用简单的协议与模型及数据库通信

  你的Akelos应用可以在大多数共享主机服务供应方上运行,因为Akelos对服务器唯一的要求就是支持PHP。因此,Akelos PHP框架是理想的用于发布单独web应用的框架,因为它不需要非标准PHP配置便能运行。

  6. Symfony

  Symfony是一个用于开发PHP5项目的web应用框架。其目的在于加速web应用的开发以及维护,减少重复的编码工作。

  Symfony的系统需求不高,可以被轻易的安装在任意设置上:你只需一个Unix或Windows,搭配一个安装了PHP5的网络服务器即可。它与差不多所有的数据库兼容。Symfony的价位不高,相比主机上的花销要低得多。

  对于PHP开发者而言,使用Symfony是一件很自然的事,其学习曲线只有短短一天。干净的设计以及代码可读性将缩短开发时间。开发者可以将敏捷 开发的原理(如DRY,KISS

  或XP等)应用在其中,将重点放在应用逻辑层面上,而不用花费大量时间在编写没完没了的XML配置文件上。

  Symfony旨在建立企业级的完善应用程序。也就是说,你拥有整个设置的控制权:从路径结构到外部库,几乎一切都可以自定义。为了符合企业的开发条例,Symfony还绑定了一些额外的工具,以便于项目的测试,调试以及归档。

  7. Prado

  PRADO团队由一些PRADO狂热者组成,这些成员开发并推动PRADO框架以及相关项目的进行。 PRADO的灵感起源于Apache Tapestry。从04年开始,PRADO成为SourceForge上的开源项目之一。

  8. Zend

  作为PHP艺术及精神的延伸,Zend框架的基础在于简单,面向对象的最佳方法,方便企业的许可协议,以及经过反复测试的快速代码库。Zend框架 旨在建造更安全,更可靠的Web 2.0应用及web服务,并不断从前沿厂商(如Google,Amazon,Yahoo,Flickr,StrikeIron和 ProgrammableWeb等)的API那里吸收精华。

  9. ZooP

  Zoop PHP框架,意为Zoop面向对象的PHP框架。

  这是个稳定,可伸缩并可移植的框架。从诞生到现在的5年间,已经在不少产品开发中被使用。Zoop是一个快速,有效并干净的框架。它的伸缩性很好,你可以只安装你需要的功能。对代码并不很熟悉的开发者也可以通过Zoop快速的开发安全的web应用。熟练的开发者则可以更加将Zoop的弹性利用到极致。Zoop建议将display,logic以及数据层(MVC)分开使用。

  Zoop由很多组件和项目集合而成,其中包括smarty和prototype AJAX框架,PEAR模块等。高效的核心组件提供了很多你原本需要自己编码来实现的功能。Zoop内置的纠错功能可以通过配置实现生产环境下的错误日志 生成,这个错误日志提供了很多信息,可读性很高,可以更轻易的寻找并排除错误。Zoop的一个特别之处在于其GuiControls,在PHP中是一个相当革新的想法。它提供了很多form widgets与验证完整的集合到一起,并形成了一个可以轻松打造个性化GuiControls的框架。

  10. QPHP

  QPHP,意为快速PHP,它是一个与ASP.NET类似的MVC框架。基本上它是这样一个情况: 整合了Java和C#的美感

  除去了在其他PHP框架中使用的Perl形式的意义含糊的语言

  大量基于OOP的概念

  PHP服务器

  一、phpStudy简体中文版

  该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境.该程序不仅包括PHP调试环境,还包括了开发工具、开发手册等.总之学习PHP只需一个包.对学习PHP的新手来说, WINDOWS下环境配置是一件很困难的事;对老手来说也是一件烦琐的事.因此无论你是新手还是老手,该程序包都是一个不错的选择。

  二、PHPnow

  PHPnow是 Win32 下绿色免费的 Apache + PHP + MySQL 环境套件包。简易安装、快速搭建支持虚拟主机的 PHP 环境。

  附带 PnCp.cmd 控制面板,帮助你快速配置你的套件,使用非常方便。安装 PHPnow 只需解压、初始化,就可得到一个标准的 PHP + MySQL 的服务器环境。然后就可以直接安装 Discuz!

  等程序,或者进行 PHP 开发调试。支持虚拟主机:便捷的虚拟主机管理。虚拟主机代理:可与 IIS 共存 80 端口(代理方式)

  三、NPMserv(win下nginx+php+mysql)

  NPMserv 是一款图形界面的快速搭建nginx 0.7.61、PHP 5.3.0、MySQL 5.1.35、phpMyAdmin 3.2.1,网站服务器平台的绿色软件。无需安装,具有灵活的移动性,盘下根目录(如D:/NPMserv)、打开NPMserv.exe启动服务即可。

  www.yes919.com www.packyw.cn http://soft.yes919.com

  四、EasyPHP(Apache+PHP+MySQL套件)

  相信很多朋友对 Win+Apche+PHP+MySQL这样的组合感兴趣,但是不懂得编辑配置文件,导致在配置上面花了很大的时间。本套件采用傻瓜式安装,一次搞定,方便调试和运行PHP+MySQL程序。如果作为服务器对外开放请调整相关配置文件,本系统配置的安全系数不是非常高。请在 相关配置文件中修改Apache及PHP中网站管理员信箱及网站名称。

  建议:由于出于程序测试目的配置,安全系数并不是太高,请自行调整相关配置文件,MySQL数据库用户名:root,密码为空,安装后请设置密码。

  篇四:最佳PHP,HTML5和CSS框架大荟萃之一 PHP框架

  最佳PHP,HTML5和CSS框架大荟萃之一 PHP框架

  开发框架是用来帮助开发人员快速设计和开发动态网站的基础,几乎每个月都会有大量的框架被开发人员发布,用来帮助web开发者更简单和高效的开发web应用。

  在这篇文章中,我将总结荟萃出最佳的PHP,HTML5和CSS框架,希望能够在大家选择框架的时候能够供大家参考借鉴。如果你有任何建议和补充,谢谢阅读!

  PHP框架

  1. Cake PHP

  CakePHP是一个拥有极大灵活性的开发,维护和部署的快速开发框架。使用非常常见的MVC和ORM设计模式,及其配置规则帮助大家简化开发过程而无须开发过多的代码

  和ZF类似,CakePHP不要求配置。使用简单。在IRC上拥有非常友好的社区#cakePHP,用来帮助新的用户快速开始学习。基于MIT License,拥有最佳实践,例如,安全,认证和session处理。拥有面对对象的方式帮助你更简单的使用。

  2. Yii Framework

  Yii是一个免费,开源的web应用开发框架,使用PHP5开发,帮助开发干净,简洁的设计并且鼓励开发开发。它帮助流水化的开发应用,并且保证高效,可扩展和易维护。性能极大的优化,非常适合开发任何类型的产品和项目。然而,它内建复杂,企业级别的应用。你拥有完整的控制,包括表现层和持久层,符合了企业级别开发的指导方针

  3. Zend

  Zend Framework 2 是一个使用PHP5.3+来开发web应用和服务的开源框架。使用100%的面对对象的代码并且使用PHP5.3种的新特性,例如名字空间,late static binding,lamda function和closure。Zend framewok 2 由成功的PHP框架Zend Framework 1演变而来,而Zend framework 1拥有1500万的下载量。Zend framework2拥有独特的组件结构,每一个组件都设计的尽量少和其它组件产生依赖关系。 ZF2遵循了严格的面对对象的设计原理。这种非严格的组件关系结构允许开发人员使用任何他想使用的组件。

  4. Symfony

  Smyfony是一个web应用框架,遵循了典型的.MVC(model view controller)的设计结构,现在越来越受欢迎,Symfony基于MIT license,它使用一些PHP代码类的辅助类库得开发的过程简单

  5. Webasyst

  webasyst是一个开源的框架用来开发平滑的多用户web应用或者复杂的网站。和其它的框架,例如,zend和symfony,比较起来,Webasyst框架更专注,并且允许更快和更高效的创建基于商业和团队使用的应用。这个框架提供了大量的现成的工具用来管理用户和授权,UI创建,移动端的访问等等

  6. Laravel

  Laravle是一个定位于优雅简单的PHP框架。变成不会变的苦闷。事实上,使用正确的工具绝对是让它成为一个让人愉悦的事情。Laravel适合所有的PHP开发人员,特别是初学者。

  除了完善的文章,Laravel的友好的社区一直帮助回答文档上没有涉及到的相关问题。使用Bundle来打包和分享代码绝对是一个非常棒的方式

  7. Guzzle

  Guzzle是一个帮助大家解决发送HTTP请求和创建web service 客户端中多余的步骤的框架。包含了用来创建强壮的web service客户端的工具,其中: 定义输入和输出的服务描述API,用来遍历分页资源的资源迭代,高效发送大量请求等等。

  8. Phalcon PHP

  Phalcon PHP是一个被发布成为C扩展并且提供高性能和低资源消耗的web框架。使用C书写,平台无关。作为这样的框架,PHP支持微软的windows系统, GNU/linux,Max OSX,你可以下载一个适合你的系统的二进制包或者自己编译

  9. CodeIgniter

  Codelgiter是一个强大的PHP框架,拥有非常小的体积,针对需要使用简单优雅的工具套件开发完整特性的web应用而开发。如果你需要处理共享主机账号或者客户时间有限制,并且厌倦了没有文档的大型框架的话,Codeignier可能非常适合你

  10. Fuel PHP

  Fuel是一个简单,灵活,社区驱动的5.3 web框架,基于其它框架中的好的想法而开发一个框架。在Apache,,IIS和Nginx上测试过。Fuel使用另外一种方式实现,和其它框架不同,它努力成为社区驱动的框架。刚成立不到6个月,已经有30多个开发人员贡献了代码和文档。

  当然了国产框架也有一些, 例如,thinkPHP也还可以,具体项目还是得具体分析!

  免费领取兄弟连php原创视频教程光盘,详情咨询官网客服: http://www.lampbrother.net

  篇五:主流PHP框架优缺点对比

  主流PHP框架优缺点对比

  2012-04-14 文章互联网 浏览次数: 206

  PHP是一种在国内外都比较流行的开源服务器端脚本开发语言。能够适应大中小型项目的开发需求。我们将在这篇文章中向大家介绍几款主流PHP框架及其相关优缺点评比,作为一个参考分享给朋友们。

  主要参考的PHP框架包括:CodeIgniter、CakePHP、ZendFramework、Symfony。我对很多框架也没有认真使用,只是简单试用了一下,可能很多看法不成熟或者是错误的,请大家指正,一起成长。

  优点:

  1. 配置简单,全部的配置使用PHP脚本来配置,执行效率高;具有基本的路由功能,能够进行一定程度的路由;具有初步的Layout功能,能够制作一定程度的界面外观;数据库层封装的不错,具有基本的MVC功能

  2. 快速简洁,代码不多,执行性能高,PHP框架简单,容易上手,学习成本低,文档详细;自带了很多简单好用的library,框架适合小型应用

  缺点:

  1. 把Model层简单的理解为数据库操作

  2. PHP框架略显简单,只能够满足小型应用,略微不太能够满足中型应用需要 评价:

  总体来说,拿CodeIgniter来完成简单快速的应用还是值得,同时能够构造一定程度的layout,便于模板的复用,数据操作层来说封装的不错,并且CodeIgniter没有使用很

  多太复杂的设计模式,执行性能和代码可读性上都不错。至于附加的 library 也还不错,简洁高效。

  优点:

  1. CakePHP是最类似于RoR的PHP框架,包括设计方式,数据库操作的Active Record方式;设计层面很优雅,没有自带多余的 library,所有的功能都是纯粹的框架,执行效率还不错;数据库层的 hasOne, hasMany 功能很强大,对于复杂业务处理比较合适;路由功能,配置功能还不错;自动构建脚手架(scaffold)很强大;适合中型应用;基本实现过了MVC每一层;具有自动操作命令行脚本功能;

  2. 文档比较全,在国内推广的比较成功,大部分都知道CakePHP,学习成本中等 缺点:

  1. CakePHP非常严重的问题是把Model理解为数据库层操作,严重影响了除了数据库之外的操作能力

  2. CakePHP的cache功能略显薄弱,配置功能稍嫌弱;CakePHP不适合大型应用,只适合中型应用,小型应用来说略微的学习成本高了点

  评价:

  总体来说CakePHP框架代表了PHP框架很重要的一个时代和代表,并且目前发挥着很重要的作用,不少自己写的框架都模仿了CakePHP的方式,是个里程碑式的产品;CakePHP透露着RoR的敏捷开发方式和把数据库操作认为是唯一Model的设计思想,作为开发快速应用和原型是绝好的工具;同样,用来做Web2.0网站的开发框架,也是值得选择的。

  优点:

  1. 官方出品,自带了非常多的 library,框架本身使用了很多设计模式来编写,架构上很优雅,执行效率中等;MVC设计中,比较简洁,具有路由功能,配置文件比较强大(能够处理XML和php INI),各种 library 很强大,是所有PHP框架中各种功能最全面的,包括它不仅是一个PHP框架,更是一个大类库(取代PEAR),这是它的主要特色;能够直观的支持除数据库操作之外的Model层(比 CodeIgniter 和 CakePHP 强),并且能够很轻易的使用Loader功能加载其他新增加的Class;Cache功能很强大,从前端Cache到后端Cache都支持,后端Cache支持Memcache、APC、SQLite、文件等等方式;数据库操作功能很强大,支持各种驱动(适配器)

  2. 文档很全,在国内社区很成熟,并且目前不少Web 2.0网站在使用,学习成本中等

  缺点:

  1. MVC功能完成比较弱,View层简单实现(跟没实现一样),无法很强大的控制前端页面

  2. 没有自动化脚本,创建一个应用,包括入口文件,全部必须自己手工构建,入门成本高

  3. Zend Framework 作为一个中型应用框架问题不大,也能够勉强作为大型应用的PHP框架,但是作为一个很成熟的大型PHP框架来说,还需要一些努力

  评价:

  作为官方出品的框架,Zend Framework的野心是可以预见的,想把其他框架挤走,同时封装很多强大的类库,能够提供一站式的框架服务,并且他们的开发团队很强大,完全足够有能力开发很强大的产品出来,所以基本可以确定的是Zend Framework前途无量,如果花费更多的时间去完善框架。同样的,Zend Framework架构本身也是比较优雅的,说明Zend官方是有很多高手的,设计理念上比较先进,虽然有一些功能实现的不够完善,

  比如View层,自动化脚本等等,这些都有赖于未来的升级。总体来说Zend Framework是最值得期待的PHP框架,当然,你目前要投入你的项目中使用也是完全没问题的。

  优点

  1. Symfony 是我了解的PHP框架中功能最强大的,而且我使用时间比较长,但是很多功能还是没有挖掘出来;它完整实现了MVC三层,封装了所有东西,包括 $_POST,$_GET 数据,异常处理,调试功能,数据检测;包含强大的缓存功能,自动加载Class(这个功能很爽),强大的i18n国家化支持;具有很强大的view层操作,能够零碎的包含单个多个文件;非常强大的配置功能,使用yml配置能够控制所有框架和程序运行行为,强大到让人无语;能够很随意的定义各种自己的class,并且symfony能够自动加载(auto load)这些class,能够在程序中随意调用;包含强大的多层级项目和应用管理:Project --> Application --> Module --> Action,能够满足一个项目下多个应用的需要,并且每层可以定义自己的类库,配置文件,layout;非常强大的命令行操作功能,包括建立项目、建立应用、建立模块、刷新缓存等等;

  2. Symfony绝对是开发大型复杂项目的首选,因为使用了Symfony,将大大节约开发成本,并且多人协作的时候,不会出现问题,在Project级别定义好基础Class以后,任何模块都能够重用,大大复用代码

  缺点:

  1. 数据库操作model采用了重量级的propel和creole,不过在我测试的版本中已经把他们移到了addon里,可用可不用

  2. 缓存功能无法控制,每次开发调试总是缓存,需要执行 symfony cc, symfony rc 来清除和重建缓存;

  3. 效率不是很高,特别是解析模板和读取配置文件的过程,花费时间不少;

  4. 学习成本很高,并且国内没有成熟的社区和文档,连中文手册都没有,相应的要掌握所有功能,需要花费比较多的时间

  评价:

  Symfony绝对是企业级的PHP框架,唯一能够貌似能够跟Java领域哪些强悍框架抗衡的东西;强悍的东西,自然学习复杂,但是相应的对项目开发也比较有帮助,自然是推荐复杂的项目使用Symfony来处理,觉得是值得,后期的维护成本比较低,复用性很强。相应的如果使用Symfony的应该都是比较复杂的互联网项目,那么相应的就要考虑关于数据库分布的问题,那么就需要抛弃Symfony自带的数据库操作层,需要自己定义,当然了,Symfony支持随意的构造model层。

  总结

  以上数款PHP框架,各有特色,而且都是开源项目,不过框架针对的项目不一样,一般来说 CodeIngiter 比较适合小型项目,CakePHP 和 Zend Framework 比较适合中型项目,Symfony 比较适合大型重量级项目,在项目选型的时候,要充分考虑框架的可以定制性、扩展性,因为每个项目都无法确定你是否会随着需求的变化进行改变。

  相对来说,Zend Framework 和 Symfony 应对变化的能力比较强,特别是能够随意定制 model 层的Class,能够非常方便增加自己业务或者数据处理类,我是个人比较推荐在中大型项目中使用的PHP框架。

  CodeIngiter 和 CakePHP 在中小型项目中同样能够发挥重大作用,快速开发和原型构建,非常适合目标不清晰的原型项目的开发。

【php知识框架总结】相关文章:

1.如何学好PHP知识

2.php内核知识解读

3.使用PHP框架的十大理由

4.2017最热门的PHP框架

5.PHP语言新手入门知识

6.php中session的基础知识

7.php基础知识点

8.php基础知识大全