博文
php编码规范(2009-07-29 19:09:00)
摘要:
1. 介绍
1.1. 标准化的重要**
标准化问题在某些方面上让每个人头痛,让人人都觉得大家处于同样的境地。这有助于让这些建议在许多的项目中不断演进,许多公司花费了许多星期逐子字逐句的进行争论。标准化不是特殊的个人风格,它对本地改良是完全开放的。
1.2. 优点
当一个项目尝试着遵守公用的标准时,会有以下好处:
· 程序员可以了解任何代码,弄清程序的状况
· 新人可以很快的适应环境
· 防止新接触php的人出于节省时间的需要,自创一套风格并养成终生的习惯
· 防止新接触php的人一次次的犯同样的错误
· 在一致的环境下,人们可以减少犯错的机会
· 程序员们有了一致的敌人
1.3. 缺点
· 因为标准由一些不懂得php的人所制定,所以标准通常看上去很傻
· 因为标准跟我做的不一样,所以标准通常看上去很傻
· 标准降低了创造力
· 标准在长期互相合作的人群中是没有必要的
· 标准强迫太多的格式
1.4. 讨论
许多项目的经验能得出这样的结论:采用编程标准可以使项目更加顺利地完成。标准是成功的关键么?当然不。但它们可以帮助我们,而且我们需要我们能得到的所有的帮助!老实说,对一个细节标准的大部分争论主要是源自自负思想。对一个合理的标准的很少决定能被说为是缺乏技术**的话,那只是口味的原因罢了。所以,要灵活的控制自负思想,记住,任何项目都取决于团队合作的努力。
1.5. 解释
1.5.1. 标准实施
首先应该在开发小组的内部找出所有的最重要的元素,也许标准对你的状况还不够恰当。它可能已经概括了
重要的问题,也可能还有人对其中的某些问题表示强烈的反对。无论在什么情况下,只要最后顺利的话,人们将成熟的明白到这个标准是合理的,然后其他的程序员们也会发现它的合理**,并觉得带着一些保留去遵循这一标准是值得的。如果没有自愿的合作,可以制定需求:标准一定要经过代码的检验。如果没有检验的话,这个解决方案仅仅是一个建立在不精确的基础上的一大群可笑的人。
1.5.2. 认同观点
1. 这行不通;
2. 也许可行吧,但是它既不实用又无聊;
3. 这是真的,而且我也告诉过你啊;
函数参数传递的方式(2009-07-29 18:57:00)
摘要:函数参数传递的方式有两种:
1、传值方式。缺省情况下,函数参数通过传值的方式传递,因此即使在函数内部改变参数的值,它并不会改变函数外部参数的值。
2、传址方式。传址时只需在函数调用时在参数的前面加上“&”号即可。将函数外部的值的内存地址传递给内部的参数,在函数内部的所有操作都会改变函数外部参数的值。所以希望函数修改外部参数的值,必须使用传址传址方式。
<?php
//定义一个函数
function f3($a){
$a++;
}
$x=1;
f3($x);
echo "x=$x";//传值方式调用函数
$x=1;
f3(&$x);
echo "x=$x";//传址方式调用函数
?>
<?php
function add_some_extra(&$string)
{
$string .= 'and something extra.';
}
$str = 'This is a string, ';
add_some_extra($str);
echo $str; // 输出'This is a string, and something extra.'
?>
<?php
/* 在PHP中,函数不需要在被调用之前定义,在调用后才进行定义也是允许的。
在少数情况下,函数在需要一定的判断条件下,才能被定义。这样函数的定义必须在函数被调用之前完成。 */
$makefoo = true;
bar(); /*你不能调用foo()函数,它在这里不存在。但是能够调用bar(),调用之后在后面进行定义即可。*/
if ($makefoo) {
function foo()
{
echo "foofoo";
}
}
if ($makefoo) foo(); /* 现在我们可以正常调用foo(),因为只有$makefoo为true和定义了foo()函数后,foo()函数才存在。 */
function bar()
{
echo "barbar";
}
?>
<?php
function foo()
{
func......
PHP正则表达式(2009-07-29 18:06:00)
摘要:
2009-03-16 16:12
替换
好了,现在终于到了解决3位或4位区号问题的时间了。正则表达式里的替换指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用|把不同的规则分隔开。听不明白?没关系,看例子:
0\d{2}-\d{8}|0\d{3}-\d{7}这个表达式能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)。
\(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}这个表达式匹配3位区号的电话号码,其中区号可以用小括号括起来,也可以不用,区号与本地号间可以用连字号或空格间隔,也可以没有间隔。你可以试试用替换|把这个表达式扩展成也支持4位区号的。
\d{5}-\d{4}|\d{5}这个表达式用于匹配美国的邮政编码。美国邮编的规则是5位数字,或者用连字号间隔的9位数字。之所以要给出这个例子是因为它能说明一个问题:使用替换时,顺序是很重要的。如果你把它改成\d{5}|\d{5}-\d{4}的话,那么就只会匹配5位的邮编(以及9位邮编的前5位)。原因是匹配替换时,将会从左到右地测试每个条件,如果满足了某个条件的话,就不会去管其它的替换条件了。
Windows98|Windows2000|WindosXP这个例子是为了告诉你替换不仅仅能用于两种规则,也能用于更多种规则。
分组
我们已经提到了怎么重复单个字符;但如果想要重复一个字符串又该怎么办?你可以用小括号来指定子表达式(也叫做分组),然后你就可以指定这个子表达式的重复次数了,你也可以对子表达式进行其它一些操作(教程后面会有介绍)。
(\d{1,3}\.){3}\d{1,3}是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:\d{1,3}代表1到3位的数字,(\d{1,3}\.}{3}代表三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(\d{1,3})。
不幸的是,它也将匹配256.300.888.999这种不可能存在的IP地址(IP地址中每个数字都不能大于255)。如果能使用算术比较的话,或许能简单地解决这个问题,但是正则表达式中并不提供关于数学的任何功能,所以只能......
php 错误控制运算符 @(2009-07-29 18:01:00)
摘要:php 支持一个错误控制运算符:@。
当将其放置在一个 php 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
@是错误控制运算符
php 支持一个错误控制运算符:@。
当将其放置在一个 php 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
错误控制运算符:@。当将其放置在一个 php 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
如果激活了 track_errors 特性,表达式所产生的任何错误信息都被存放在变量 $php_errormsg 中。此变量在每次出错时都会被覆盖,所以如果想用它的话就要尽早检查。
copy to clipboard
<?php
/* intentional file error */
$my_file = @file ('non_existent_file') or
die ("failed opening file: error was '$php_errormsg'");
// this works for any expression, not just functions:
$value = @$cache;
// will not issue a notice if the index $key doesn't exist.
?>
注意:
@ 运算符只对表达式有效。对新手来说一个简单的规则就是:如果能从某处得到值,就能在它前面加上 @ 运算符。例如,可以把它放在变量,函数和 include() 调用,常量,等等之前。不能把它放在函数或类的定义之前,也不能用于条件结构例如 if 和 foreach 等。
但是,目前的“@”错误控制运算符前缀甚至使导致脚本终止的严重错误的错误报告也失效。这意味着如果在某个不存在或类型错误的函数调用前用了“@”来抑制错误信息,那脚本会没有任何迹象显示原因而死在那里 ......
PHP变量声明与类型转换(2009-07-29 08:30:00)
摘要:<?php
// 声明一个整型变量
$num = 0;
// 声明一个浮点型变量
$mount = 0.00;
// 声明一个字符型变量
$str = '';
// 声明一个数组型变量
$array = array();
// 声明一个对象型变量 Dom假设是一个已经定义的类
$obj = new Dom();
// 转换类型
$a = (int)$mount;//转换成int型,对应其它几种类型(string),(float)...
$a = intval($mount);//同上对应其它几种类型floatval,strval...
?>
<?php
// 声明一个整型变量
$num = 0;
// 声明一个浮点型变量
$mount = 0.00;
// 声明一个字符型变量
$str = '';
// 声明一个数组型变量
$array = array();
// 声明一个对象型变量 Dom假设是一个已经定义的类
$obj = new Dom();
// 转换类型
$a = (int)$mount;//转换成int型,对应其它几种类型(string),(float)...
$a = intval($mount);//同上对应其它几种类型floatval,strval...
?>
首先PHP的变量都要以$打头,如$str......
PHP数据类型(2009-07-29 08:04:00)
摘要:数据类型分为:标量数据类型,复合数据类型,特殊数据类型
1.标量数据类型:是数据结构中最基本单元,只能储存一个数据,包括boolean,string,integer,float
1.1string类型:
定义字符串与三种方式:单引号(‘)、双引号(“)、界定符(<<<)单引号和双引号是常使用定义方式,区别是双引号中包含的变量会自动被替换成实际数值,而单引号包含的变量则按普通字符串输出。
<?php
$i="welcome to network1024";
echo '$i'; //将输出$i
echo "$i"; //输出welcome to network1024
?>
转义字符:
序列 含义
\n 换行
\r 回车
\t ......
PHP的数据类型(2009-07-26 23:27:00)
摘要:php是脚本语言,所以其数据类型是弱数据类型。不过其形式更接近于shell脚本语言。
如何定义变量?
php支持的数据类型有integer、string、floating point、array、object(对象!)
$是变量的符号,“$a“表示a是一个变量,可以表示integer、string等等(弱类型!)。
1、integer
默认为十进制数,加"0"表示八进制,加“0x”表示十六进制。
注意:在浏览器所显示的数都会自动转换为十进制!
2、string
注意""、''与$符号的使用,可参见shell脚本语言。
3、array(可以是任意多维)
e.g.
<?
for ($i=0; $i<10; $i++)
for ($j=0; $j<10; $j++)
{
$num[$i][$j] = $i; // 注意:i、j前的$符号
}
echo $num[3][4]."<br>";
?>
上面所谈到的是以整数作为下标的数组,也就是枚举数组或数字索引数组。此外,若要通过名称来访问数组中的元素,那么就可以使用字符串作为数组的索引,这就是所谓的关联数组。由于关联数组是以字符串作为索引,所以就不能计算出数组中的下一个有效索引。那么,如何创建一个关联数组呢?
第一种方法:$num["str_index"]="str";
第二种方法:$num=array("str_index1"=>"str1", "str_index2"=>"str2");
然后就可以通过$num[str_index1]来访问该数组中的元素了。
在第二种方法里用到了符号"=>......
PHP注释的应用(2009-07-26 23:26:00)
摘要:
注释即是代码的解释和说明,一般放在代码的上方或代码的尾部(放后方是,代码和注释之间加几个<tab>键,以方便程序阅读),用来说明代码或函数的编写人,用途,时间等。注释不会影响到程序的执行,因为在执行时,注释部分会被解释器忽略不计。
1.PHP支持3种风格的单行注释(//)
<?php
echo'使用C++风格';//这就是C++风格
?>复制代码2.C风格的多行注释(/*···*/)
<?php
/*C
风格的
多行注释
*/
echo'只会看到这句话。';
?>复制代码注意:多行注释是不应许进行嵌套操作的。
3.Shell风格的注释(#)
<?php
echo'这是Shell脚本风格的注释'; #这里的内容是看不到的
?>复制代码注意:在单行注释里的内容不要出现"?>"标志,因为解释器会认为PHP脚本结束,而去执行"?>"后面的代码。列如:
<?php
echo'这样会出错的!!!!!' /......
PHP标记风格(2009-07-26 23:25:00)
摘要:PHP标记风格
PHP标记有4种不同的风格可供我们使用。如下所示的四段代码都是等价的。
• XML风格
这是本书中将使用的标记风格。它是PHP推荐使用的标记风格。服务器管理员不能禁用这种风格的标记,因此可以保证在所有的服务器上使用这种风格的标记,特别是编写用于不同服务器环境的应用程序时,这种标记风格尤为重要。这种风格的标记可以在XML(可扩展置标语言)文档中使用。如果你还打算在站点中使用XML,就必须使用这种标记风格。
• 简短风格
这种标记风格是最简单的,它遵循SGML(标准通用置标语言)处理说明的风格。要使用这种标记风格—输入字符最少—你必须在配置文件中启用short_open_tag选项,或者启用短标记选项编译PHP。在附录A,你可以找到关于如何使用这种标记风格的更多信息。不推荐使用这种风格的标记,因为虽然该标记风格当前是默认启用的,但是系统管理员偶尔会禁用它,因为它会干扰XML文档的声明。
• SCRIPT风格
这种标记风格是最长的,如果读者使用过JavaScript或VBScript,就会熟悉这种风格。如果读者所使用的HTML编辑器无法支持其他的标记风格,可以使用它。
• ASP风格
这种标记风格与Active Server Page(ASP)或ASP.NET的标记风格相同。如果在配置设定中 启用了asp_tags选项,就可以使用它。如果读者所使用的编辑器是为ASP或ASP.NET而设计的, 或者已经习惯了ASP或ASP.NET的编程风格,读者可能希望使用它。但是请注意,在默认情况下, 该标记风格是禁用的。 ......
如何学好PHP(2009-07-26 23:21:00)
摘要: 每个人的学习方式不同,写这篇文章的目的是分享一下自己的学习过程,仅供参考,不要一味的用别人的学习方法,找对自己有用的学习方式
经常在某些论坛和QQ群里看到一些朋友会问“怎样才能学好PHP,怎样才能学好***语言 ”,但别人回答最多的是:从最“简单”的开始。
这个简单也许真的不简单,呵呵。下面我想分享一下自己学习的一些过程。
先说些费话,语言组织能力差,说了不少费话,愿意看的就看,不要骂我就行
其实学习一门新语言并不是太难,重要的是你有没有准备好去学好它,时间的长短和个人的能力和决心有关。黑客界也流行一句话就是“没有入侵不了的计算机”, 这句话大概的意思是说:如果你的技术比维护这台计算机的管理员更胜一筹,那么就能拿下这台计算机甚至能拿下这个管理员管理的所有计算机,如果技不如人,只 能继续学习超过对方。我说这些话的意思就是让准备学习陌生语言朋友一定要下决心去学习,只要你下了决心去学了,就一定能学好,千万不要半途而废。(退一万 步来说,即使是没学好,但你懂的必然比别人多)
了解什么是最简单:
1、网页的基本构成就是html代码,所以必须熟悉HTML/CSS/JS等基本元素
2、熟悉PHP语法,了解PHP和HTML的运行方式,学习将PHP与HTML结合完成简单页面,PHP手册是比较好的入门老师…..
影响学习进度和程序强大是否的几个可能因素:
1、记忆力
一门语言的强大是否,应该看它的函数库和代码执行效率。
 ......