前言
这里筑梦师, 是一名正在努力学习的 iOS 开发工程师, 目前致力于全栈方向的学习, 希望可以和大家一起交流技术, 共同进步, 用简书记录下自己的学习历程.
个人学习方法分享
全栈开发自学笔记 已开源 https://github.com/DreamerWinston/Full-Stack-Developer-Note
[PHP 开发学习笔记(面向对象篇)] 稍后更新
[PHP 开发学习笔记(框架篇)] 稍后更新
[PHP 开发学习笔记(实际应用篇)] 稍后更新
本文阅读建议
1. 一定要辩证的看待本文.
2. 本文并不会涉及到 PHP 详细知识点, 只陈述在学习 PHP 过程中遇到的关键点.
3.PHP 依照其开发应用分为'基础篇, 面向对象篇, 框架篇, 实际应用篇', 根据本人学习进度更新.
4. 本文知识点繁杂, 并不能全部发布, 还请移步 github 下载完整笔记进行参考
5. 本文所表达观点并不是最终观点, 还会更新, 因为本人还在学习过程中, 有什么遗漏或错误还望各位指出.
6. 觉得哪里不妥请在评论留下建议~
7. 觉得还行的话就点个小心心鼓励下我吧~
目录
1.PHP 介绍
2. 环境搭建
3.HTTP 协议
4.PHP 基础
认识 PHP
PHP 可以做什么
使用流程
基本语法
基本数据类型
类型转换
变量
常量
字符串
数组
宏定义
传值
运算符
流程控制
函数
数组与数组结构
文件加载
错误处理
5.PHP 基础项目写法
6. 总结
学习体会
这篇文章大概在大半个月前就应该发出来了, 为什么鸽了这么久呢, 因为那时才学习了一个星期的 PHP, 在阅读了大量的书籍和文章以后, 我才发现, 这门所谓 "世界上最好的语言" 学起来, 并没有那么简单.
因为不想直接从书籍和文章搬运, 所以这篇以及其他文章迟迟没有发布出来, 我要总结出属于自己的东西.
在经过了将近这大半个月的学习, 终于对 PHP 这门语言拥有了自己的看法和见解.
首当其冲的就是, 在学习 PHP 语言开发的同时, 一定要结合着 MySQL 进行学习, 并且做一个拥有自己想法的网站 Demo, 充分利用起来 html & CSS & JavaScript.
如何学习
PHP 这门语言虽然有着容易上手之称, 但因为其开源, 所以其复杂程度并不亚于任何一门成熟的面向对象语言.
因为其种类为服务器脚本语言, 刚入门的时候, 我们学习的必定是 PHP 面向过程的写法.
通过面向过程的写法去了解 PHP 这门服务器脚本语言, 然后带入类和对象的概念, 因为其版本原因, 在 PHP5.1 版本后才完全支持面向对象.
在学习了面向对象以后, 自然会引入 MVC 和其他类型的设计模式, 设计出成型的项目架构, 或者使用现在项目中较为流行的 Smarty,ThinkPHP,Laravel 等
PHP 介绍
经过这一段时间的学习, 个人认为 PHP 主要用来处理从服务器发送来的请求
本文主要阐述 PHP 语言的基础部分, 并不涉及面向对象以及 MVC 概念.
环境搭建
环境搭建可以看我这篇文章 LAMP 环境搭建.
HTTP 协议
推荐读者阅读图解 HTTP 协议这本书, 更系统的了解什么是 HTTP 协议
OSI 网络模型
OSI 参考模型分为物理层, 数据链路层, 网络层, 传输层, 会话层, 表示层, 应用层.
TCP/IP 协议
网络之间传输都是基于 HTTP 协议, 但 HTTP 协议当中还有很多子协议, 其中 TCP/IP 协议便是其内部的一个子集.
TCP/IP 又将 OSI 分为了四层, 让其分工更加明确: 应用层 ->传输层 ->网络层 ->链路层.
URL
URL 全称为 Uniform Resource Identifier, 中文意思是统一资源标识符, 网络请求 URL, 由服务器返回请求该标识符的资源例如网页, 视频, 文件等.
例如: www.jianshu.com 这就是一个 URL.
请求
通俗来讲, 网络请求都是由客户端发出, 例如浏览器或手机等.
请求报文: 请求行, 请求头, 空行, 请求数据;
响应
通俗来讲, 服务器用来配置发布到万维网 / 互联网的内容, 内容发布以后, 可以通过 URL 进行访问.
由服务器来处理每一个由客户端访问的请求, 并将其访问的数据响应给客户端
响应报文: 状态行, 响应码, 响应正文;
PHP 基础
认识 PHP
服务器端的语言
嵌入到 HTML 当中的语言
脚本语言
PHP 可以做什么
收集表单数据
生成动态网页
字符串处理
动态输出图像
处理服务器端文件系统
编写数据库支持的网页
会话跟踪控制
处理 XML 文件
支持利用大量的网络协议
服务器端的其他相关操作
使用流程
编写 PHP 后缀文件
放在服务器上
通过 URL 访问到该 PHP 文件
基本语法
php.ini 配置文件
php 解锁挂载功能模块需要修改 php.ini 文件
各种配置设置都在该文件进行修改.
PHP 标记
PHP 语言, 是一种可以嵌入到 "html" 代码中的后台处理语言(程序)
开始标记
<?php
PHP 代码
结束标记
?>
示例
<?php php 代码写在这里..... ?>
其他标记格式
<% php 代码写在这里..... %>
php.ini 配置
<? php 代码写在这里..... ?>
php.ini 配置 short_open_tag = On 方可使用
PHP 语句结束规则
每一行代码的结束处要以 ";" 结尾.
结束用; 号
注释
注释不仅方便项目交接, 并可以随时说明代码的功能参数以及作用.
单行注释 //
多行注释 /* */
空白处理规范
基本数据类型
整数 int & integer
浮点数 float & double
布尔类型 Bool & Boolean
字符串类型
资源类型
数组类型
对象类型
NULL 类型
伪类型
类型判断
此处内容在笔记 https://github.com/DreamerWinston/Full-Stack-Developer-Note 里有详细解释
类型转换
自动转换
我们无需做任何处理, 而是, 程序会根据运算时运算符所需要的数据类型进行转换.
如果参与运算的数据不是需要的类型, 则会自动转换为需要的数据类型.
- $v1 = 1 + "3"; // 结果是 4;
- $v2 = 1 . "3"; //"." 是字符串连接符, 这里, 1 会被转换为字符串, 结果是:"13"
强制转换
人为使用强转换语法进行转换, 比如:
- $v1 = (int) "1";
- // 结果,$v1 是整数类型的 1
- $v2 = (float) "1.23"
- ; // 结果是浮点类型的 1.23
- $v3 = (string) $v1; // 结果是字符串 "1"
变量
定义
使用一个 "标记符号"(标识符), 来代表某个数据
定义形式: $ 变量名 = 具体的数据;
举例: $data =123;
在 PHP 中变量名区分大小写.
变量是一个 "容器", 是一个 "盒子", 是一个可以存放数据的位置 -- 内存空间.
内存 (条) 中分割出很多很多的小格子, 其中格子上都有标记(变量名), 以及对应存放了数据.
命名规则
赋值 & 取值
系统预定义变量
变量传值
可变变量
常量
含义
常量, 就是一个用于存储 "不会 (也不允许) 变化的数据" 的标识符.
比如圆周率, 在一定的应用场景中, 就是是一个固定的值(人为规定为某个值).
常量字符串 const
系统内置常量 | 魔术常量 | 全局变化常量.
系统预定义常量
字符串
概念
字符串在 C 语言当中是当做字节数组处理的
字符串在 PHP 当中当做基本数据类型处理的,
字符串没有长度限制
字符串类型特点
单引号字符串
双引号字符串
常用字符串输出函数
常用字符串格式化函数
heredoc
nowdoc
转义字符
字符串长度
数组
概念
数组, 是指将若干数据按一定的顺序组合为一个整体.
每个数据被称为一个 "单元"-- 数组单元.
每个单元由两部分构成: 下标和值, 下标也称为 "键"(key),
数组的一个重要特点是: 其中的数据有明确的顺序, 而是, 是其放入数组时的先后顺序.
下标定义
整数下标
索引数组
关联数组(字典)(JSON 对象)
数组维数
遍历数组
变量定义
define()函数形式
define('常量名', 对应的常量值);
常量名推荐使用 "全大写".
判断是否存在
截图
传值
值传递
引用传递
运算符
含义
就是对数据进行某种所需要的运算的语法符号, 比如加减乘除, 或比较大小, 或判断真假.
表达式
赋值运算符:
=
算术运算符:
/ %
连接运算符 & 字符串运算符:
.
自赋值运算符:
+= -= *= /= %= .=
自操作运算符:
++ --
比较运算符:
= <<= == != === !==
逻辑运算符:
&&(与) ||(或) !(非)
条件运算符:
数据 1 ? 数据 2 : 数据 3
位运算符:
& | ~
对象运算符
其他:
@, 是错误抑制符
( ), 括号, 用于提升运算优先级, 括号中的先运算.
运算符优先级
流程控制
概述
顺序结构:
程序运行的自然状态, 就是从前往后 (从上到下) 运行程序.
分支结构:
程序运行过程中, 根据判断条件的不同结果(true 或 false), 执行不同的分支(其他分支不再执行).
循环结构:
程序运行过程中, 根据判断条件的不同结果(true 或 false), 决定是再次执行还是不再执行.
分支结构
单一条件分支结构 if
双条件分支结构 else
多条件分支结构 else if
多向条件分支结构 switch
巢状分支结构 if else 循环层次嵌套
循环结构
特殊控制语句
递归处理
递推处理
函数
函数的概念
函数不是数!
函数是一种代码形式(语法形式).
函数是将 "若干行代码" 以一种语法形式包装成的一个整体.
该整体可以做到 "需要的时候就去执行它"(就是执行其中的若干行代码).
函数是解决在不同情形 (不同代码位置) 下需要执行相同代码的有效方式 -- 所谓代码重用.
函数通常用于 "专业的事由专业的人来做" 这种现实世界的常见现象.
也在其他语言中常被叫为 "方法".
函数的作用
函数详解
系统预定函数
作用域
应用各种形式的函数
数组与数组结构
数组的定义
数组的分类
索引数组
关联数组
数组的创建
字面量创建
array()函数声明
多维数组
数组的遍历
for 循环遍历
foreach 遍历
系统预定义数组
文件加载
文件加载含义
将一个 (别的) 文件包含到当前文件中, 成为当前文件运行过程中的一部分.
通常, 一些公共的代码, 在多个页面都需要用到的时候, 会做成一个独立的文件.
然后在不同的页面需要用到的时候, 直接载入进来就可以了.
文件加载的四种方法.
include("");
每次都载入文件(可能会重复载入), 如果载入失败, 在报错后继续执行后续语句;
include_once("");
只载入一次(不会重复载入), 如果载入失败, 在报错后继续执行后续语句;
require("");
每次都载入文件(可能会重复载入), 如果载入失败, 在报错后终止程序;
require_once("");
只载入一次(不会重复载入), 如果载入失败, 在报错后终止程序;
错误处理
错误分类
语法错误:
程序不能运行, 是在运行之前, 检查语法的时候, 就发现语法出错, 结果是提示错误, 不运行程序.
运行时错误
语法检查没错, 然后开始运行, 在运行中出现了错误, 然后报错.
这是开发中最常见的错误.
逻辑错误:
程序能运行, 且一直到结束没有报错, 但执行得到的结果却是错的.
常见错误代号
含义
- E_NOTICE
- E_WARNING
- E_ERROR
- E_PARSE
- E_USER_ERROR
- E_USER_WARNING
- E_USER_NOTICE
- E_ALL
错误触发
错误显示设置
错误日志设置
自定义错误处理
- exit(),die(),return
- exit()
官网定义 https://secure.php.net/manual/zh/function.exit.php
输出一个消息并且退出当前脚本.
中止脚本的执行. 尽管调用了 exit(), Shutdown 函数 以及 object destructors 总是会被执行.
exit 是个语法结构, 如果没有 status 参数要传入, 可以省略圆括号.
die()
官网定义 https://secure.php.net/manual/zh/function.die.php
等同于 exit();
常用于除了错误抛出错误信息
return
官网定义 https://secure.php.net/manual/zh/function.return.php
如果在一个函数中调用 return 语句, 将立即结束此函数的执行并将它的参数作为函数的值返回. return 也会终止 eval() 语句或者脚本文件的执行.
如果在全局范围中调用, 则当前脚本文件中止运行. 如果当前脚本文件是被 include 的或者 require 的, 则控制交回调用文件. 此外, 如果当前脚本是被 include 的, 则 return 的值会被当作 include 调用的返回值. 如果在主脚本文件中调用 return, 则脚本中止运行. 如果当前脚本文件是在 php.ini 中的配置选项 auto_prepend_file 或者 auto_append_file 所指定的, 则此脚本文件中止运行.
用法
基本用法
- exit:
- <?php
- $file = fopen($filename, 'r')
- or exit("unable to open file ($filename)");
- //exit program normally
- exit;
- exit();
- exit(0);
- //exit with an error code
- exit(1);
- exit(0376); //octal
- ?>
return: 常用于结束函数和返回一个函数返回值
- <?php
- $_SESSION['text'] = 'Best PHP';
- function getText()
- {
- $text = $_SESSION['text'];
- return $text;
- unset($_SESSION['text']);
- }
- echo getText().'<br />';
- echo $_SESSION['text'];
- ?>
特别注意
当某个 php 文件当中, 第一层代码有 return 的存在, 代码执行到此处就会结束掉该 php 文件的执行.
并且, 该文件的 return 只会影响到自己, 即便被导入也只会结束掉该文件.
而如果 php 文件的第一层代码有 die()和 exit()的方法执行, 如果被其他文件导入, 执行到此处后, 该文件和后续代码都不会执行.
测试代码如下
- <?php
- echo '这是第一句话 < br>';
- include "2.php" ;
- echo '这是第二句话 < br>';
- ?>
- <?php
- echo '这是第三句话 < br>';
- exit('程序已退出 < br>');
- echo '这是第四句话 < br>';
- ?>
输出结果:
这是第一句话
这是第三句话
程序已退出
- <?php
- echo '这是第一句话 < br>';
- include "2.php";
- echo '这是第二句话 < br>';
- ?>
- <?php
- echo '这是第三句话 < br>';
- return;
- echo '这是第四句话 < br>';
- ?>
输出结果:
这是第一句话
这是第三句话
这是第二句话
由此可见 exit()和 return 对 php 文件的影响.
结束语
如果您对这篇文章有什么意见或者建议, 请评论与我讨论.
如果您觉得还不错的话~ 可以点个喜欢鼓励我哦.
如果您想和我一起学习, 请毫不吝啬的私信我吧~
来源: http://www.jianshu.com/p/954d815ff768