变量和作用域
$globals[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量刘表的儿子。
static作用域
保持某个局部变量不被删除
参数作用域
echo和print
echo – 可以输出一个或多个字符串print – 只允许输出一个字符串,返回值总为 1(自带换行)
提示: echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
php中的eof
必须后接分号,否则编译通不过。eof 可以用任意其它字符代替,只需保证结束标识与开始标识一致。结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。
常用大写的 eot、eod、eof 来表示,但是不只限于那几个(也可以用:json、html等),只要保证开始标记和结束标记不在正文中出现即可。
位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符 . 或 , 来拼接
数据类型
var_dump()返回变量的类型和值数组: $x = array(1, 2, 3);布尔: $x = true;空值: $x = null;对象: class
类型比较(没看完)
== : 只比较值===: 比较类型和值
常量
设置常量: 两小儿辩日文言文翻译define(name, value, ca_innsitive )name:必选参数,常量名称,即标志符。value:必选参数,常量的值。ca_innsitive :可选参数,如果设置为 true,该常量则大小写不敏感。默认是大小写敏感的。常量是全局的
函数中可以直接用常量,不用什么关键字!
字符串变量
并置运算符 : ” . “字符串长度: strlen()查询字符的位置: strpos(str1, str2)
运算符
算术赋值递增/递减比较不等于: ! 和 <>子衿的意思绝对不等于: !== (值和类型都不同)逻辑与: and &&或: or ||非: xor !数组运算集合: +判断: ==, ===, !=, <>, !==三元:a1? a2: a3php5.3 + : 可以省略中间表达式php7+的运算??运算符优先级括号改变运算符优先级
条件语句
if 语句 – 在条件成立时执行代码if…el 语句 – 在条件成立时执行一块代码,条件不成立时执行另一块代码if…elif….el 语句 – 在若干条件之一成立时执行一个代码块switch 语句 – 在若干条件之一成立时执行一个代码块
数组
创建数组: array()php中有三种类型的数组:
数值数组 – 带有数字 id 键的数组
关联数组 – 带有指定的键的数组,每个键关联一个值
多维数组 – 包含一个或多个数组的数组获取数组的长度: count($变量名)遍历(数值和关联的遍历方式不同)
数组排序
sort() – 对数组进行升序排列rsort() – 对数组进行降序排列asort() – 根据关联数组的值,对数组进行升序排列ksort() – 根据关联数组的键,对数组进行升序排列arsort() – 根据关联数组的值,对数组进行降序排列krsort() – 根据关联数组的键,对数组进行降序排列
php超级全局变量
$globals$_rver$_request$_post$_get$_files$_env$_cookie$_ssion
循环
while – 只要指定的条件成立,则循环执行代码块do…while – 首先执行一次代码块,然后在指定的条件成立时重复这个循环for – 循环执行代码块指定的次数foreach – 根据数组中每个元素来循环代码块(用于遍历数组)
foreach($array as $value) { 要执行代码; }
函数
```function name(){}```
魔术常量
__line____file____dir____function____class____trait____method____namespace__
命名空间(include用来导入文件)
namespace myproject{ }声明命名空间的编码方式: declare(encoding=’utf-8′)命名空间前出现了<html> 会致命错误 - 命名空间必须是程序脚本的第一条语句子命名空间:
遵循文件与目录的关系
namespace myproject\sub\level; //声明分层次的单个命名空间
命名空间的使用非限定名称,或不包含前缀的类名称限定名称,或包含前缀的名称完全限定名称,或包含了全局前缀操作符的名称namespace操作符和__namespace__u操作符: 导入 起别名用as
用u只会影响非限定和限定名称,不会影响完全限定名称在动态类型中(是文件和文件之间的互相调用),限定和完全限定名称没有区别全局空间:用
面向对象
$this: 类自身对象成员变量用var定义创建对象: $a = new car;对象调用: ->
构造函数:
function __construct($par1, $par2){$this->url = $par1;$this->url = $pa艾青的现代诗r2;}
析构函数:
function __destruct(){}
继承:(php不支持多继承)
class car extends parent{// 代码部分}
访问控制: public, protected, private
继承中可以对 public 和 protected 进行重定义,但 private 而不能接口使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。接口中定义的所有方法都必须是公有,这是接口的特性。要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。
常量: const
抽象类
abstract class abstractclass{// 强制要求子类定义这些方法abstract protected function getvalue();abstract美术统考 protected function prefixvalue($prefix);// 普通方法(非抽象方法)public function printout(){ print $this->getvalue() . php_eol;}}
此外,子类方法可以包含父类抽象方法中不存在的可选参数。
static关键字声明类属性或方法为 static(静态),就可以不实例化类而直接访问。静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。静态属性不可以由对象通过 -> 操作符来访问。自 php 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字 lf,parent 或 static。final关键字如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。调用父类构造方法php 不会在子类的构造方法中自动的调用父类的构造方法。要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct() 。