| 安装 |
| MAMP |
|
| 变量与运算符 |
| php标签 |
| <?php ... ?> |
● 在文件最后的 ?> 通常省略, 避免bug
● 输出文字
<?= 字符串; ?>
// 相当于
<?php echo 字符串; ?>
|
| 在html里插入php |
● 文件名后缀为php
|
|
| 声明的分隔与注释 |
| 分隔符 |
;
|
| 除了自定义的变量与常量都不区分大小写 |
|
| 注释 |
|
| |
|
|
| 变量与常量 |
| 变量 |
| 声明 |
无需声明, 带上 $ 即可
|
|
系统定义的变量
|
$_ 开头的是超级全局变量
| $GLOBALS |
全局可用的所有变量的指针 |
| $_SERVER |
服务器环境和运行环境 |
| $_GET |
HTTP GET变量 |
| $_POST |
HTTP POST变量 |
| $_FILES |
HTTP上传文件变量 |
| $_REQUEST |
HTTP请求变量 |
| $_SESSION |
session变量 |
| $_ENV |
环境变量 |
| $_COOKIE |
HTTP cookie |
| $php_errormsg |
最近的错误信息 |
| $HTTP_RAW_POST_DATA |
原生post数据 |
| $argc |
传入脚本的参数数量 |
| $argv |
传入脚本的参数数组 |
|
|
| 常量 |
| 声明 |
关键词 const
|
| 注意 |
习惯上常量所有字母都大写 |
| 已定义的常量 |
| 核心模块变量 |
| PHP_VERSION_ID |
运行中的php版本, 整数值 |
| PHP_EOL |
现在OS的换行文字 |
| PHP_INI_MAX |
整数最大值 |
| PHP_INT_MIN |
整数最小值 |
| PHP_OS |
现在的OS |
| TRUE |
true |
| FALSE |
false |
| NULL |
null |
| E_ERROR |
重大的运行错误 |
| E_PARSE |
编译器的解析错误 |
|
| 逻辑变量 |
| __LINE__ |
现在的行号 |
| __FILE__ |
文件的绝对路径与文件名 |
| __DIR__ |
当前文件所在文件夹 |
| __FUNCTION__ |
现在的函数名 |
| __CLASS__ |
现在的类名
# TODO: check here p42
|
| __TRAIT__ |
跟踪名 |
| __METHOD__ |
类的方法名 |
| __NAMESPACE__ |
现在的命名空间的名称 |
|
|
|
|
| 展示字符串或变量 |
都输出到html里
| 输出多个值 |
例
echo 'sample'; //=> sample
echo 'a', 'b', 'c'; //=> abc
● 只有一个变量时可以带括号
echo('sample'); // => sample
|
| 输出一个值 |
● 连结多个值, 用 .
$sample="b";
print("a".$sample); // => ab
|
| debug用 |
# TODO: finish here p44
● 要想带换行, 放入 <pre>...</pre> 标签
http://www.w3school.com.cn/tags/tag_pre.asp
|
| |
|
|
| 运算符 |
| 代入运算符 |
|
| 复合代入运算符 |
|
| 算术运算符 |
+, - , *, /, %, **(指数)
|
| 递加递减 |
++, --
$a++ // 先评价式子最后递加
++$a // 先递加再评价式子
● 对字符串递加递减
认定成数字的作为数字, 认定成字母的按字母顺序
|
| 字符串连结运算符 |
.
例
"hello "."world"; //=>hello world
● 对数字使用则自动转为字符串
● 带有数字时 . 两侧放上空格
|
| 比较运算符 |
| >, < |
常识 |
| >=, <= |
常识 |
| ==, != |
常识 |
| === |
两侧类型相同 且 值相等 |
| !== |
两侧类型不同 或 值不相等 |
| |
|
|
| php7新增 |
| <=> |
a>b时为正, a=b时为0, a<b时为负
(相当于a-b)
|
| ?? |
a为null则用b的值, 否则用$a
● 连用
|
|
| 逻辑运算符 |
|
| 三项运算符 |
|
| 位运算符 |
| <<, >> |
移位 |
| & |
都是1则1, 否则0
|
| | |
有1则1, 否则0
|
| ^ |
两个相反则为1
|
| ~ |
0, 1对调
|
| |
|
|
| 转换运算符 |
php不验证类型, 根于式子自动转换。故一般不需要
|
(int)
(integer)
|
转换为整数 |
|
(bool)
(boolean)
|
转换为布尔值 |
|
(float)
(double)
(real)
|
转换为浮点数 |
| (string) |
转换为字符串 |
| (array) |
转换为数组 |
| (object) |
转换为object |
| (unset) |
转换为null |
|
| 类型运算符 |
如果是指定类的实例则返回true, 否则返回false
例
|
|
| 条件与循环 |
| if |
● 标准写法
if(c1) {
...
} else if (c2) {
...
} else if (c3) {
...
} else {
...
}
● 不带括号写法
if (c1):
...
elseif (c2):
...
else
...
endif;
|
| switch |
● 标准写法
switch(式子) {
case v1:
...
break;
case v2:
...
break;
...
default: // 可省略
...
break;
}
● 不带括号写法
switch(式子):
case v1:
...
break;
case v2:
...
break;
...
default: // 可省略
...
break;
endswitch;
|
| while |
● 标准写法
● 不带括号写法
|
| do-while |
● 标准写法
● 不带括号写法
不存在
|
| for |
● 标准写法
for(初期条件; 条件式; 计数器更新方式) {
...
}
● 不带括号写法
for(初期条件; 条件式; 计数器更新方式):
...
endfor
|
| break |
|
| continue |
|
| 函数 |
| 常用的数学函数 |
| abs(数值) |
返回绝对值 |
| ceil(数值) |
大于参数的最小整数 |
| floor(数值) |
小于参数的最大整数 |
| max(n1, n2, ...) |
获取最大值, string则为字母顺序
|
| min(n1, n2, ...) |
获取最小值, string则为字母顺序 |
| sqrt(数值) |
平方根 |
| pow(a, b) |
a的b次方
相当于
|
| mt_rand() |
返回一个0~mt_getrandmax()之间的随机数 |
| mt_rand(min, max) |
返回一个min~max之间的随机数 |
| pi() |
圆周率π |
| sin(n) |
|
| cos(n) |
|
| tan(n) |
|
| is_nan(n) |
n是不是数值 |
|
| 自定义函数 |
# TODO: 整理此处的内容
| 函数定义 |
和js一样会提前提取函数声明, 故没有顺序
function 函数名(a1, a2, ...) {
...
return ...;
}
|
| 参数的省略与初始值 |
注: 带初始值的参数后面的参数都要带初始值
function 函数名(a1, a2, ..., ar1=..., ar2=..., ...) {
...
}
|
| 动态长度参数 |
参数名前带 ... , 此参数及后面的作为数组传入此
function 函数名(a1, a2, ..., ...b) {
...
}
● 获取参数信息
| func_get_args() |
获取参数的数组 |
| func_num_args() |
获取参数的个数 |
| func_get_arg() |
获取指定的参数 |
|
| 指定参数和返回值的类型 |
function 函数名(类型 参数1, 类型 参数2, ...):返回值的类型 {
...
}
● 可以指定的类型
| array |
数组 |
| callable |
回调函数 |
| bool |
布尔值 |
| float |
浮点数(float, double, real) |
| int |
整数 |
| string |
字符串 |
| 类名/接口名 |
指定的类的实例 |
| self |
实例自身 |
● 可以省略返回值类型, 也可以参数里混搭不指定类型的
|
| 传值与传指针 |
传指针的可以改变自身
例
function sample($a, &$b) {...}
|
| 函数指针 |
函数名的字符串
确认是否存在此函数, 用 function_exist()
|
| 无名函数 |
function (...) use(...) {
...
}
● 用use来声明使用的外部变量
● use内的值在函数定义时确定, 不论外部怎么变use里都不变
|
|
| 变量的有效域 |
| 变量的有效域 |
所在的代码块 |
| 内部使用全局变量 |
例
"this is global";
function sample(int $a, float $b, $c):bool {
global $a;
echo $a;
return "sa";
}
|
| 静态变量 |
|
| 动态生成变量 |
双重$, 用指定变量的值来命名变量名
例
$color = "red";
$$color = 1; // => $red = 1
|
|
| 字符串 |
| |
|
| |
|
| |
|
| |
|
| 数组 |
| |
|
| |
|
| |
|
| |
|
| 面向对象 |
| 类的定义 |
| 类定义 |
class 类名 {
// properties
public const 常量 = ...;
public 变量 = ...;
// methods
public function 方法名(...) {
...
}
}
● 属性的初始值必须是值, 不能是式子
public $name = "a"."b"; // 不能这样
|
| 生成实例 |
| 生成实例 |
|
| 获取属性, 呼出方法 |
$sample = new Sample();
$sample->$property;
$sample->method();
|
|
| $this |
类方法内部获取类的属性
public function test() {
$a = $this.$b;
...
}
● 不带this的话只寻找本地属性, 故会报错
|
| 构造函数 |
function __construct(...) {
...
}
|
| 类文件与读取文件 |
| include(path) |
遇到读取错误也会继续进行下去 |
| include_once(path) |
且只读一次 |
| require(path) |
遇到读取错误会抛出错误 |
| require_once(path) |
且只读一次
实际都用这个
|
|
| 静态变量, 静态方法 |
| 声明 |
public static $version = "1.0.1";
public static function check_version(...) {...}
|
| 接入 |
| 自身类与实例处 |
例
self::$version;
self::check_version(self::$version);
|
| 其他类呼出 |
|
|
| |
|
|
| 范围修饰符 |
| public |
我的战车随时出发 |
| protected |
此类和子类才能读写 |
| private |
只有此类内部才能读写 |
|
| |
|
|
| 类的继承 |
| 类继承 |
class 子类 extends 父类 {
...
}
|
| 构造函数 |
父类的构造函数 parent::__construct(...)
function __construct(...) {
parent::__construct(...);
...
}
|
| 重载 |
直接重新定义原来的函数即可...
|
| final |
禁止继承/重载
final class ...
final function ...
|
|
| trait |
| 定义 |
trait 名 {
// properties
// methods
}
|
| 用法 |
如果是外部文件里的, 要require_one(path)
|
| 解决命名冲突 |
insteadof
# TODO 查查这里
|
| 给方法增加名称 |
as
use aT, bT {
aT::hello as at_hello;
bT::hello as bt_hello;
aT::hello insteadof bT
}
|
|
| 接口 |
| 接口 |
interface 名 extends 父接口名 {
const 常数=值;
function 函数名(...);
}
|
| 采用接口 |
class 名 extends 父类 implements n1, n2, ... {
...
}
|
|
| 抽象类 |
| 定义 |
abstract class 名 {
abstract function 名(...);
...
// 抽象类内部功能的实现
...
}
|
| 继承抽象类并实现方法 |
class 名 extends 抽象类名 {
...
function 抽象函数(...) {...}
// 此类自身的功能实现
...
}
|
|
| |
|
| 表单基础 |
| |
|
| |
|
| |
|
| |
|
| 表单例 |
| |
|
| |
|
| |
|
| |
|
| session |
| |
|
| |
|
| |
|
| |
|
| 文件读写 |
| |
|
| |
|
| |
|
| |
|