轻松上手,快乐学习!

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 – 类和对象


类是对象的模板,对象是类的实例。


OOP 案例

假设我们有一个名为 Fruit 的类。 Fruit 可以具有名称、颜色、重量等属性。我们可以定义 $name、$color 和 $weight 等变量来保存这些属性的值。

创建单个对象(苹果、香蕉等)时,它们会继承类的所有属性和行为,但每个对象的属性值会有所不同。


定义一个类

通过使用 class 关键字定义类,后跟类的名称和一对花括号 ({})。 它的所有属性和方法都放在大括号内:

语法

<?php
class Fruit {
  // code goes here...
}
?>

下面我们声明一个名为 Fruit 的类,它包含两个属性($name 和 $color)以及两个用于设置和获取 $name 属性的方法 set_name() 和 get_name():

实例

<?php
class Fruit {
  // Properties
  public $name;
  public $color;

  // Methods
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
}
?>
亲自试一试 »

注释:在类中,变量称为属性,函数称为方法!


定义对象

没有对象,类什么都不是! 我们可以从一个类中创建多个对象。 每个对象都有类中定义的所有属性和方法,但它们会有不同的属性值。

类的对象是使用 new 关键字创建的。

在下面的例子中,$apple 和 $banana 是 Fruit 类的实例:

实例

<?php
class Fruit {
  // Properties
  public $name;
  public $color;

  // Methods
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
}

$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
亲自试一试 »

在下面的示例中,我们向 Fruit 类添加了另外两个方法,用于设置和获取 $color 属性:

实例

<?php
class Fruit {
  // Properties
  public $name;
  public $color;

  // Methods
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
  function set_color($color) {
    $this->color = $color;
  }
  function get_color() {
    return $this->color;
  }
}

$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
亲自试一试 »

PHP - $this 关键字

$this 关键字引用当前对象,并且只在方法内部可用。

看下面的例子:

实例

<?php
class Fruit {
  public $name;
}
$apple = new Fruit();
?>

那么,我们可以在哪里更改 $name 属性的值? 有两种方式:

1. 在类内部(通过添加 set_name() 方法并使用 $this):

实例

<?php
class Fruit {
  public $name;
  function set_name($name) {
    $this->name = $name;
  }
}
$apple = new Fruit();
$apple->set_name("Apple");
?>
亲自试一试 »

2. 类外(通过直接改变属性值):

实例

<?php
class Fruit {
  public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
?>
亲自试一试 »

PHP - 实例

您可以使用 instanceof 关键字来检查对象是否属于特定类:

实例

<?php
$apple = new Fruit();
var_dump($apple instanceof Fruit);
?>
亲自试一试 »