PHP 面向对象实现代码_PHP
1,简单的对象创建
复制代码 代码如下:
//类的作用域final:将阻止子类重写这个字段
//方法的作用域abstract: 在父类中声明,在子类中实现
//定义类:
class Employee{
//定义字段
private $name;
protected $title;
public $wage;
//常量
const PI = 3.1415926;
//静态成员变量
private static $visitors = 0;
//定义构造函数
function __construct(){
//使用静态成员变量
self::$visitors++;
echo "constructor";
}
//定义析构函数
function __destruct(){
echo "destruct";
}
//声明方法
public function clockIn(){
//使用字段
echo "Member $this->name";
}
//在访问一个对象并不拥有的属性时(比如私有字段),如果该对象用户__get和__set方法,则会自动调用__get方法或__set方法
function __set($property,$value){
$this->$property = $value;
}
function __get($property){
return $this->$property;
}
}
//类的继承 Manager继承Employee
class Manager extends Employee {
function __construct(){
//调用父类的构造函数或方法
parent::__construct();
parent::clockIn();
echo "Manager constructor";
}
}
//创建对象
$employee = new Employee();
$employee->wage = 10000;
//使用常量
echo Employee::PI;
//调用方法
$employee->clockIn();
$manager = new Employee();
//instanceof判断一个对象是类的实例、类的子类,还是实现了某个特定接口
if($manager instanceof Employee ) echo "Yes";
2,高级OO特性
(1)对象克隆
复制代码 代码如下:
//对象克隆
class ClassA{
private $name;
private $title;
public function setName($name){
$this->name = $name;
}
function getName(){
return $this->name;
}
public function setTitle($title){
$this->title = $title;
}
public function getTitle(){
return $this->title;
}
function __clone(){
echo "我被克隆了","
";
}
}
$classA = new ClassA();
$classA->setName("NameA");
$classA->setTitle("TitleA");
$classB = clone $classA;
$classB->setName("NameB");
echo $classA->getName(),"
",$classA->getTitle(),"
";
echo $classB->getName(),"
",$classB->getTitle(),"
";
/* output
我被克隆了
NameA
TitleA
NameB
TitleA
*/
(2)接口
复制代码 代码如下:
//接口
interface IPillage{
function method();
}
class ClassC extends ClassA implements IPillage {
function method(){
echo "inteface method";
}
}
$classC = new ClassC();
$classC->method();
//inteface method
(3)抽象类
复制代码 代码如下:
//抽象类,是不能实例化的类,只能作为其它类继承的基类
abstract class BaseClass{
protected $name;
abstract function method();
}
class ChileClass extends BaseClass {
function method(){
echo "method";
}
}
$child = new ChileClass();
$child->method();
//output method
注:
如果要创建一个模型,这个模型将由一些紧密相关的对象采用,就可以使用抽象类。如果要创建由一些不相关对象采用的功能,就使用接口。
如果必须从多个来源继承行为,就使用接口。php可以继承多个接口,但不能扩展多个抽象类。
如果知道所有类都会共享一个公共的行为实现,就使用抽象类,并在其中实现该行为。在接口中无法实现行为。

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
