最近过得太浮躁了,实在自己都看不下去了,看了PHP圣经之后,觉得非常有必要要总结一下。
Chapter1.快速入门
·PHP标记:总共有三种风格,常用的还是XML风格为主
<?php echo '<p>Hello PHP!</p>'; ?>
·单引号和双引号对变量显示的影响
在双引号中,变量名称将被变量值所替代,而在单引号中,变量名称,或者任何其他文本都会不经修改而发送给浏览器。考虑以下代码:
<?php
$num = 3;
echo "<p>$num</p>";
echo '<p>$num</p>';
?>
显示:
·字符串的连接(沿用python等脚本语言的风格)
<?php echo "<p>".'Hello'."</p>"; ?>
·超级全局变量的种类:
·$_GLOBALS —— 所有全局变量数组
·$_SERVERS —— 服务器环境变量数组(比如php.ini里面的配置信息)
·$_GET —— 通过GET方法传递给脚本的变量数组(通过地址栏传地址等等)
·$_POST —— 通过POST方法传递给脚本的变量数组(主要接触的目前只有表单)
·$_COOKIE —— cookie(缓存)变量数组(目前还没用过)
·$_FILES —— 与文件上传相关的变量数组
·$_REQUEST —— 所有用户输入的变量数组,包括$_GET,$_POST和$_COOKIE所包含的输入内容
·测试变量的状态
比较常用的函数有isset,empty,以及unset函数
·isset判断变量是否存在,empty可以判断检查一个变量是否存在,以及它的值是否为非空和非0,而unset函数能够销毁一个变量。
·对于条件选择结构:if(...){...}elseif(...){...} (else和if是连在一块)
Chapter2.文件读和写
文件读写有下面几个步骤:
·打开文件 ·创建并写入文件 ·给文件加锁 ·读文件或写文件 ·关闭文件 ·删除文件
写文件的典型例子:
<?php
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; //获取www的决定路径
$str = "123";
@ $fp = fopen("$DOCUMENT_ROOT/../string/123.txt",'ab'); //打开文件 flock($fp,LOCK_EX); //给文件加锁,取得独占 fwrite($fp,$str,len($str)); //写文件 flock($fp,LOCK_UN); //给文件解锁 fclose($fp); //关闭文件 ?>
读文件的典型例子:
<?php
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; @$fp = fopen("$DOCUMENT_ROOT/../123/123.txt",'rb'); //打开文件 while(!feof($fp))
{
$order = fgets($fp,999); //文件
echo $order."<br />";
} //读文件时不需要锁定文件
fclose($fp); ?>
详细的还是查查手册吧,诸如什么file_exist() , unlink() 都挺重要的。
Chapter3.使用数组
·首先有个array()的构造函数。
·比较多有用的函数(其实跟其他语言的数组差不多啊):sort(),shuffle(),array_reverse(),count(),file()(将文件载入一个数组里面,其中以空格分隔开)
详细的还是查一下手册吧。
Chapter4.字符串操作与正则表达式
关于字符串格式化的函数:
·trim()函数用来整理用户输入的数据,包括除去换行符和回车符(\n和\r),水平和垂直制表符(\t),字符串结束符和空格(\0)
$name = trim($_POST['name']);
·nl2br()函数使用HTML格式化,如果不用的话,输出到浏览器会除掉中间空格。
<p>Your feedback has been sent.</p>
<p><?php echo nl2br($mailcontent); ?></p>
·格式化字符串以便存储——addslashes()函数,以便数据存入数据库
$feedback = addslashes(trim($feedback));
·explode()函数——字符串的分割,PHP5已经开始沿用这个函数来进行字符串的分割成数组,原型如下:
array explode ( string $delimiter
, string $string
[, int $limit
] )
·join()函数 —— 字符串的连接
·strtok()函数
$str
, string $token
)$token
)strtok() 将字符串 str
分割为若干子字符串,每个子字符串以 token
中的字符分割。这也就意味着,如果有个字符串是 "This is an example string",你可以使用空格字符将这句话分割成独立的单词。
注意仅第一次调用 strtok 函数时使用 string 参数。后来每次调用 strtok,都将只使用 token 参数,因为它会记住它在字符串 string 中的位置。如果要重新开始分割一个新的字符串,你需要再次使用 string 来调用 strtok 函数,以便完成初始化工作。注意可以在 token 参数中使用多个字符。字符串将被该参数中任何一个字符分割。
·strtr()函数与strpos()函数——查找子字符串的位置
·strstr()函数的介绍
返回 haystack
字符串从 needle
第一次出现的位置开始到 haystack
结尾的字符串。
Note:
该函数区分大小写。如果想要不区分大小写,请使用 stristr()。
Note:
如果你仅仅想确定
needle
是否存在于haystack
中,请使用速度更快、耗费内存更少的 strpos() 函数。
示例:
<?php
$email = 'name@example.com';
$domain = strstr($email, '@');
echo $domain; // 打印 @example.com $user = strstr($email, '@', true); // 从 PHP 5.3.0 起
echo $user; // 打印 name
?>
·strpos()函数的介绍
返回 needle
在 haystack
中首次出现的数字位置。与 strrpos() 不同,在 PHP 5 之前,该函数可以使用一个完整字符串作为needle
,并且整个字符串都将被使用。
·正则表达式的介绍——呃,这个在Python已经常见了,在这就不怎么介绍了。就介绍ereg()和eregi()(后者不区分大小写)
$pattern
, string $string
[, array &$regs
] )Note:
使用 Perl 兼容正则表达式语法的 preg_match() 函数通常是比 ereg() 更快的替代方案。
以区分大小写的方式在 string
中寻找与给定的正则表达式 pattern
所匹配的子串。
如果找到与 pattern
中圆括号内的子模式相匹配的子串并且函数调用给出了第三个参数 regs
,则匹配项将被存入 regs
数组中。$regs[1] 包含第一个左圆括号开始的子串,$regs[2] 包含第二个子串,以此类推。$regs[0] 包含整个匹配的字符串。
如果在 string
中找到 pattern
模式的匹配则返回 所匹配字符串的长度,如果没有找到匹配或出错则返回 FALSE
。如果没有传递入可选参数 regs
或者所匹配的字符串长度为 0,则本函数返回 1。
示例:
<?php
if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) {
echo "$regs[3].$regs[2].$regs[1]";
} else {
echo "Invalid date format: $date";
}
?>
·更多的还是去翻翻手册吧,不方便详细聊。
Chapter5.代码重用和函数编写
·代码重用的思想在软件工程上经常有所体现,多写写大概就能够领会这种思想了,包括在github的一些开源项目,也是体现代码重用的思想。
·一般的PHP项目当中,会经常新建这样的一个.php文件作为函数库,以便于后面的页面用到这些函数时能够方便调用。
·函数重用,经常使用的函数有require()和include()函数,其变形分别为:require_once()函数和include_once()函数,后者确保一个包含的文件只能被引入一遍。
·关于函数中使用全局变量的方法——关键字global
function fn(){
global $var;
$var = "contents";
echo "<p>$var</p>";
}
基本上就这些,PHP其实面对过程的特点更其他语言差不多。
Chapter6.面向对象的PHP
·关于面向对象这一块,我由于水平有限,所以目前写的代码没怎么用到类,代码也没怎么体现面向对象的思想,所以也无法总结出一些有价值的东西。但是以我之见,面向对象主要还是理解类与对象,继承,派生以及多态等东西吧。更多的还得在后续学习提升自己。
Chapter7.错误和异常处理
没总结。。。。。。
请多多指教!