PHP

属性

属性声明是由关键字 public 或者 protected 或者  private 开头,然后跟一个变量来组成。 属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指php脚本在编译阶段时就为常数,而不是在编译阶段之后在运行阶段运算出的常数。

如果直接使用var声明属性,而没有publicprotected, 或 private,php 5 会认为这个属性为public

在类的成员方法里面,可以通过$this->property(property是属性名字)这种方式来访问类的属性、 方法,但是要访问类的静态属性或者在静态方法里面却不能使用,而是使用self::$property





字符串

不像 双引号  和 heredoc 语法结构, 在单引号 字符串 中的 变量  和特殊含义的字符将  不会  被替换。

双引号

如果字符串是包围在双引号(")中, PHP将对一些特殊的字符进行解析:

Heredoc结构

第三种定义字符串的方法是用heredoc句法结构:<<<。在该提示符后面,要定义个标识符,然后是一个新行。接下来是字符串本身,最后要用前面定义的标识符作为结束标志。

Warning

Heredocs结构不能用来初始化class,而从PHP 5.3以后,则该限制只能用在包含变量的情况下。

在PHP 5.3.0以后,也可以用Heredoc结构来初始化静态变量和类的属性和常量:


Nowdoc结构

nowdoc不进行解析操作

一个nowdoc结构也用和heredocs结构一样的标记 <<<, 但是跟在后面的标志符要用单引号括起来,就像<<<'EOT'这样。heredocs结构的所有规则也同样适用于nowdoc结 构,尤其是结束标志符的规则。

Note:

不象 heredocs结构,nowdocs结构可以用在任意的静态数据环境中,最典型的示例是用来初始化类的属性或常量:


字符串 可以用'.' (点) 操作符连接起来, 注意 '+' (加号) 操作符  没有  这个功能

类与对象

访问控制

类成员都必须使用关键字public、protected 或 private 进行定义

Note为了兼容性考虑,在 PHP 4 中使用 var 关键字对变量进行定义的方法在 PHP 5 中仍然有效(只是作为 public 关键字的一个别名)。在 PHP 5.1.3 之前的版本,该语法会产生一个 E_STRICT 警告。

对方法的访问控制

类中的方法都必须使用关键字public、protected 或 private 进行定义。如果没有设置这些关键字,则该方法会被设置成默认的 public。



self 和 parent 这两个特殊的关键字是用于在类的内部对成员或方法进行访问的。

实现多个接口时,接口中的方法不能有重名。

重载

PHP所提供的" 重载 "(overloading)是指动态地" 创建 "类属性和方法。
当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用。
所有的重载方法都必须被声明为public
这些魔术方法的参数都不能 通过引用传递


5.3.0 新增 __callStatic()魔术方法。 可见性未设置为public或未声明为static的时候会产生一个警告
5.1.0 新增 __isset() 和 __unset()两个魔术方法。

属性重载

public  void  __set (  string $name ,  mixed $value )
public  mixed  __get (  string $name )
public  bool  __isset (  string $name )
public  void  __unset (  string $name )

在给未定义的变量赋值时,__set() 会被调用。

读取未定义的变量的值时,__get() 会被调用。

当对未定义的变量调用 isset() 或 empty()时,__isset() 会被调用。

当对未定义的变量调用 unset()时,__unset() 会被调用。

参数$name是指要操作的变量名称。__set() 方法的$value 参数指定了$name变量的值。

属性重载只能在对象中进行。在静态方法中,这些魔术方法将不会被调用。所以这些方法都不能被 声明为static。 从PHP 5.3.0起, 将这些魔术方法定义为static会产生一个警告。


方法重载

public  mixed  __call (  string $name ,  array $arguments )
public static  mixed  __callStatic (  string $name ,  array $arguments )

当调用一个不可访问方法(如未定义,或者不可见)时,__call() 会被调用。

当在静态方法中调用一个不可访问方法(如未定义,或者不可见)时,__callStatic() 会被调用。

$name 参数是要调用的方法名称。$arguments 参数是一个数组,包含着要传递给方法$name 的参数。


对象迭代




命名空间

只有三种类型的代码受命名空间的影响,它们是:类,函数和常量
如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。
在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。另外,所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前:


与PHP其它的语言特征不同,同一个命名空间可以定义在多个文件中,即允许将同一个命名空间的内容分割存放在不同的文件中。

在同一个文件中定义多个命名空间

也可以在同一个文件中定义多个命名空间。在同一个文件中定义多个命名空间有两种语法形式。





全局的非命名空间











导入的名称必须是完全限定的,不会根据当前的命名空间作相对解析。







PHP 中的所有变量都是以 $ 符号开始的。(PHP 的入门者往往会忘记在变量的前面的 $ 符号。如果那样做的话,变量将是无效的。




你可能感兴趣的:(PHP)