《PHP和MySQL Web开发》读书笔记(上篇)
最近过得太浮躁了,实在自己都看不下去了,看了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.错误和异常处理
没总结。。。。。。
请多多指教!
《PHP和MySQL Web开发》读书笔记(上篇)的更多相关文章
- PHP和MySQL Web开发学习笔记介绍
前言 从2016年2月1日开始,之后的几个月左右的时间里,我会写一个系列的PHP和MySQL Web开发的学习笔记.我之前一直从事Java语言的开发工作,最近这段时间非常想学习一门语言,就选择了PHP ...
- Flask Web开发读书笔记
开篇:目前想自学Flask Web开发--基于Python,找了几本书准备啃啃,同时也会分享读书笔记.希望和大家一起进步. Flask是小型框架,可以算是微框架,但是他的功能还是比较多 Flask有三 ...
- 《PHP与MySQL WEB开发》读书笔记
<PHP与MySQL WEB开发>读书笔记 作者:[美]Luke Welling PHP输出的HereDoc语法: echo <<<theEnd line 1 line ...
- 《PHP和MySQL Web开发》读书笔记(下篇)
又与大家见面了.继续<PHP和MySQL Web开发>的总结. Chapter8.设计Web数据库 ·回去看看数据卡那本书吧,这里就不累赘谈这个东西. Chapter9.创建Web数据库 ...
- 【前端】移动端Web开发学习笔记【2】 & flex布局
上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...
- 【前端】移动端Web开发学习笔记【1】
下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...
- ASP.NET Core Web开发学习笔记-1介绍篇
ASP.NET Core Web开发学习笔记-1介绍篇 给大家说声报歉,从2012年个人情感破裂的那一天,本人的51CTO,CnBlogs,Csdn,QQ,Weboo就再也没有更新过.踏实的生活(曾辞 ...
- PHP和MySQL Web开发 原书第4版 高清文字版,有目录,附带源码
PHP和MySQL Web开发 原书第4版:http://yunpan.cn/QCWIS25zmYTAn 提取码 fd9b PHP和MySQL Web开发 原书第4版源码:http://yunp ...
- PHP和MySQL Web开发(原书第4版) 高清PDF+源代码
PHP和MySQL Web开发(原书第4版) 高清PDF+源代码 [日期:2014-08-06] 来源:Linux社区 作者:Linux [字体:大 中 小] 内容简介 <PHP和My ...
- Django Web开发指南笔记
Django Web开发指南笔记 语句VS表达式 python代码由表达式和语句组成,由解释器负责执行. 主要区别:表达式是一个值,它的结果一定是一个python对象:如:12,1+2,int('12 ...
随机推荐
- angularJS1笔记-(5)-过滤器练习
html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 【Leetcode】109. Convert Sorted List to Binary Search Tree
Question: Given a singly linked list where elements are sorted in ascending order, convert it to a h ...
- [转帖]Intel为何吊打AMD,先进半导体工艺带来什么?
Intel为何吊打AMD,先进半导体工艺带来什么? 2016-3-10 15:38 | 作者:Strike | 关键字:超能课堂,半导体工艺,CPU制程 分享到 按照摩尔定律的发 ...
- 3 vue-router 的默认hash 改mode:history去除#号 传参
npm install vue-router --save //安装 传参
- spring注解方式注入
1.通过Resource注入 1.在属性上注入 1.默认注入 即不指定spring容器里面的名字 匹配规则:先通过属性的名字查找 再通过属性类型与实现类类型匹配查找 当有两个实现类会报错 2.通过指定 ...
- Climbing Stairs - LeetCode
目录 题目链接 注意点 解法 小结 题目链接 Climbing Stairs - LeetCode 注意点 注意边界条件 解法 解法一:这道题是一题非常经典的DP题(拥有非常明显的重叠子结构).爬到n ...
- 如何让自己的广播只让指定的 app 接收?
1.自己的应用(假设名称为应用 A)在发送广播的时候给自己发送的广播添加自定义权限,假设权限名为:com.itheima.android.permission , 然后需要在应用 A 的 Androi ...
- Windows + Ubuntu下JDK与adb/android环境变量配置完整教程
假设JDK和android sdk路径分别如下: D:\Program Files\Java\jdkD:\android-sdk 1.JDK环境变量配置JAVA_HOME=D:\Program Fil ...
- Html 响应式 Web
网格视图 很多网页都是基于网格设计的,这说明网页是按列来布局的. 使用网格视图有助于我们设计网页.这让我们向网页添加元素变的更简单. 响应式网格视图通常是 12 列,宽度为100%,在浏览器窗口大小调 ...
- 人人贷网的数据爬取(利用python包selenium)
记得之前应同学之情,帮忙爬取人人贷网的借贷人信息,综合网上各种相关资料,改善一下别人代码,并能实现数据代码爬取,具体请看我之前的博客:http://www.cnblogs.com/Yiutto/p/5 ...