作用域:公共 (public)、受保护 (protected)、私有(private) 的属性或方法
公共属性 :公共的属性可以直接通过相应对象进行访问和处理
受保护属性:仅能在内部使用的属性,也可以被衍生类访问或处理
私有属性:只能在定义了该属性的类的内部访问或处理
公共方法:可以在任何时候、任何位置访问
受保护方法:只能在原类及其子类中使用
私有方法:只能在同一类定义的其它方法中使用,而不能在子类定义的方法中使用
6.4 静态类成员
<?php
class Visitor
{
private static $visitors = 0;
function __construct()
{
self::$visitors++;
}
static function getVisitors()
{
return self::$visitors;
}
}
// 实例化 Visitor 类
$a = new Visitor();
echo Visitor::getVisitors(); // 1
// 实例化另一个 Visitor 类
$b = new Visitor();
echo Visitor::getVisitors(); // 2
代码结果如下:
1
2
6.8 trait
trait是一种代码重用方式,可以在多个类中实现同一种功能、我们不用一遍又一遍地编写相同的代码,而是可以将它定义为一个 trait ,再 “包含”到多个类定义中。这种实现就像是编译时的复制与粘贴。如果需要进行功能修改,在一个地方就可以完成,也就是修改 trait 即可,这种修改会在所有 trait 使用之处生效。
trait 的定义方式和类一样,但它使用的是 关键字 trait ,而不是 class 。它可以包含属性和方法,但不能实例化为对象。可以通过语句 use <trait name> ,可以将 trait 包含到类中;还可以在一个类中包含多个 trait,方法是使用一个由逗号隔开的 trait 列表, 如 use <trait1>, <trait2>;。
<?php
trait Log{
function writeLog($message)
{
file_put_contents("log.txt", $message. "\n", FILE_APPEND);
}
}
class A {
use Log;
function __construct()
{
$this->writeLog("__construct A called");
}
}
class B {
use Log;
function __construct()
{
$this->writeLog("__construct B called");
}
}
new A;
new B;
在 log.txt 中会写入以下内容文章来源:https://www.toymoban.com/news/detail-506264.html
__construct A called
__construct B called文章来源地址https://www.toymoban.com/news/detail-506264.html
到了这里,关于第六章 面向对象的PHP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!