《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 ...
随机推荐
- HDU 2123 An easy problem
http://acm.hdu.edu.cn/showproblem.php?pid=2123 Problem Description In this problem you need to make ...
- HBase 架构与工作原理4 - 压缩、分裂与故障恢复
本文系转载,如有侵权,请联系我:likui0913@gmail.com Compacation HBase 在读写的过程中,难免会产生无效的数据以及过小的文件,比如:MemStore 在未达到指定大小 ...
- typescript 不用import?
如果你想用ts文件,而又不想import,export,怎么办呢? 感谢开发者提供的工具. https://github.com/domchen/typescript-plus. 感想: 仅 ...
- Centos7 pip 安装MySQLdb(mysql-python)出错
租了个阿里云的Centos7的ECS,需要使用pip安装MySQLdb模块.也就是mysql-python模块. 但是遇到问题 Collecting mysql-python Downloading ...
- 对synchronized的一点理解
一.synchronized的使用(一).synchronized同步方法1. “非线程安全”问题存在于“实例变量”中,如果是方法内部的私有变量,则不存在“非线程安全”问题.2. 如果多个线程共同访问 ...
- Fair CodeForces - 987D(巧妙bfs)
题意: 有n个城市 m条边,每条边的权值为1,每个城市生产一种商品(可以相同,一共k种),求出分别从每个城市出发获得s种商品时所走过路的最小权值 解析: 我们倒过来想,不用城市找商品,而是商品找城市, ...
- VDOM configuration
VDOM configuration 来源 https://cookbook.fortinet.com/vdom-configuration/ Posted on January 6, 2015 by ...
- Timus 1005 解题报告
题目链接 http://acm.timus.ru/problem.aspx?space=1&num=1005 题目大意 给你一堆石头,现在需要你将这堆石头分成两堆,要求两堆石头的重量相差最小, ...
- 20135319zl内核模块编译报告
内核模块编程学习报告 1.编写一个简单的输出信息的模块 源代码: Makefile 编译模块 加载模块 测试模块(dmesg) 卸载模块 Sudo rmmod 1 使用dmesg查看情况 2.输出当前 ...
- HDU.2147 kiki's game (博弈论 PN分析)
HDU.2147 kiki's game (博弈论 PN分析) 题意分析 简单的PN分析 博弈论快速入门 代码总览 #include <bits/stdc++.h> using names ...