轻松上手,快乐学习!

PHP 教程

PHP 教程PHP 简介PHP 下载安装PHP 语法PHP 注释PHP 变量PHP Echo / PrintPHP 数据类型PHP 字符串PHP 数值PHP MathPHP 常量PHP 运算符PHP If...ElsePHP SwitchPHP 循环While 循环Do While 循环For 循环Foreach 循环Break/ContinuePHP 函数PHP 数组索引数组关联数组多维数组数组排序PHP 全局变量$GLOBALS$_SERVER$_REQUEST$_POST$_GETPHP 正则表达式PHP 表单处理PHP 表单验证PHP 表单验证必填字段PHP 表单验证URL/E-mailPHP 表单验证实例PHP 日期和时间PHP IncludePHP 文件处理PHP 文件打开/读取PHP 文件创建/写入PHP 文件上传PHP CookiesPHP SessionsPHP FiltersPHP Filters AdvancedPHP 回调函数PHP JSONPHP 异常处理PHP 什么是 OOPPHP 类和对象PHP 构造函数PHP 析构函数PHP 访问修饰符PHP 继承PHP 类常量PHP 抽象类PHP 接口PHP 特征PHP 静态方法PHP 静态属性PHP 命名空间PHP 可迭代对象MySQL DatabaseMySQL ConnectMySQL Create DBMySQL Create TableMySQL Insert DataMySQL Get Last IDMySQL Insert MultipleMySQL PreparedMySQL Select DataMySQL WhereMySQL Order ByMySQL Delete DataMySQL Update DataMySQL Limit DataPHP XML ParsersPHP SimpleXML ParserPHP SimpleXML - GetPHP XML ExpatPHP XML DOMAJAX IntroAJAX PHPAJAX DatabaseAJAX XMLAJAX Live SearchAJAX PollPHP 实例PHP 编译器PHP 测验PHP 练习

PHP 参考手册

PHP 概述PHP ArrayPHP CalendarPHP DatePHP DirectoryPHP ErrorPHP ExceptionPHP FilesystemPHP FilterPHP FTPPHP JSONPHP KeywordsPHP LibxmlPHP MailPHP MathPHP MiscPHP MySQLiPHP NetworkPHP Output ControlPHP RegExPHP SimpleXMLPHP StreamPHP StringPHP Variable HandlingPHP XML ParserPHP ZipPHP Timezones


PHP OOP – 特征


PHP - 什么是特征?

PHP 仅支持单一继承:子类只能从一个单一父类继承。

那么,如果一个类需要继承多个行为呢? OOP 特征解决了这个问题。

特征用于声明可在多个类中使用的方法。 Traits 可以具有可在多个类中使用的方法和抽象方法,并且方法可以具有任何访问修饰符(public、private 或 protected)。

特征用 trait 关键字声明:

语法

<?php
trait TraitName {
  // some code...
}
?>

要在类中使用特征,请使用 use 关键字:

语法

<?php
class MyClass {
  use TraitName;
}
?>

我们来看一个例子:

实例

<?php
trait message1 {
public function msg1() {
    echo "OOP is fun! ";
  }
}

class Welcome {
  use message1;
}

$obj = new Welcome();
$obj->msg1();
?>
亲自试一试 »

实例解析

在这里,我们声明一个特征:message1。 然后,我们创建一个类:Welcome。 类使用 trait,并且 trait 中的所有方法都将在类中可用。

如果其他类需要使用 msg1() 函数,只需在这些类中使用 message1 trait。 这减少了代码重复,因为不需要一遍又一遍地重新声明相同的方法。


PHP - 使用多个特征

让我们看另一个例子:

实例

<?php
trait message1 {
  public function msg1() {
    echo "OOP is fun! ";
  }
}

trait message2 {
  public function msg2() {
    echo "OOP reduces code duplication!";
  }
}

class Welcome {
  use message1;
}

class Welcome2 {
  use message1, message2;
}
$obj = new Welcome();
$obj->msg1();
echo "<br>";

$obj2 = new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>
亲自试一试 »

实例解析

在这里,我们声明了两个特征:message1 和 message2。 然后,我们创建两个类: Welcome 和 Welcome2。 第一个类 (Welcome) 使用 message1 特征,第二个类 (Welcome2) 使用 message1 和 message2 特征(多个特征用逗号分隔)。