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可以继承多个接口,但不能扩展多个抽象类。
如果知道所有类都会共享一个公共的行为实现,就使用抽象类,并在其中实现该行为。在接口中无法实现行为。
php面向对象代码_PHP 面向对象实现代码相关推荐
- php面向对象代码_PHP面向对象之抽象类详解(代码实例)
[摘要] PHP即"超文本预处理器",是一种通用开源脚本语言.PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言.PHP独特的语法混合了C.Java.Perl以及 ...
- mysql面向对象例子_PHP 面向对象实例:获取数据库用户数据
先写一个数据库配置文件如下: db_config.php // 数据库配置文件, db_config.php $db_server = "localhost"; $db_user ...
- php中平方代码_php 做出平方代码,用类来实现的接口,初学者请大侠们出手啊。...
interfaceInterator{functionrewind();functioncurrent();functionkey();functionnext();functionvalid();} ...
- php http面向对象编程实例,PHP面向对象编程——PHP对象引用实例代码
/* ?* WEB开发笔记 www.chhua.com 每日练习 PHP面向对象编程--PHP对象引用实例代码 ?*/ /*代码演示 ?* */ class HelloWorld {//被引用对象 ? ...
- python面向对象大段代码_python面向对象部分简单整理
面向对象 VS 面向过程 面向过程 面向过程的程序设计的核心是过程(流水线式思维) 优点: 极大的降低了写程序的复杂度 缺点: 一整个过程(流水线)只能解决一个问题,若问题更改,代码几乎要全部重写. ...
- 线性拟合和梯度下降python代码实现—面向对象(二)
最近看到了一个系列博客,写的不错,就拿来学习了下.一来加深理解,二来锻炼自己编写代码的能力. 关于基础的理论知识就不重述了,网上资源很多,这里推荐:https://www.zybuluo.com/ha ...
- HALCON:如何结合面向对象和面向过程的代码
HALCON:如何结合面向对象和面向过程的代码
- 笔记37 笨办法学python练习43面向对象OOP的游戏代码(二)代码的反复理解
笔记37 笨办法学python练习43面向对象OOP的游戏代码(二)代码的反复理解 连续贴着这个练习43的代码折腾了整整两天,把那些英文文本翻译为中文文本,重新装进这个代码之中.本想一段一段的运行,发 ...
- Java码农进阶之路~代码块面向对象特征之继承
一 代码块 1.局部代码块(方法) 书写位置:方法中 作用:限制作用域 2.构造代码块 书写位置:类中 方法外 代码的执行顺序: ①系统调用 ②只要创建对象 就会调用 ③构造代码块 在 构造方法 之前 ...
- 一文带你深入理解【Java基础】· 面向对象编程(下)②代码块、final和abstract
写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...
最新文章
- GitHub开源:100美元自制激光雷达
- 量子计算机个人化时间,科学家发现量子算法可以停止时间
- 基于水色图像的水质评价
- Java 开源企业信息化建设平台 O2OA 入选码云 GVP 项目
- [Selenium] CSS3 选择器
- 慢日志定位到备份锁表Waiting for global read lock原因
- 为什么现在的很多酒店都不收押金,只收房费了?
- python编程入门-Python编程入门电子书教程,看这几个就够了
- 秦时明月2服务器端代码修改,《秦时明月2》为什么修改不了?
- 批量网刻操作系统(使用GHOST工具)
- Java8所有的包介绍(由英文文档翻译而来)
- Eclipse主题插件之Darkest Dark Theme with DevStyle
- mysql如何自定义分组_mysql 使用自定义规则分组
- OGG基本框架、安装、运维、报错处理、监控命令
- containerd 拉取k8s.gcr.io/pause镜像i/o timeout
- 解密区块链最强心脏 迅雷链共识算法详解
- java实现俄罗斯方块项目
- 企业微信 android2.3,企业微信2.3版本发布
- 【Unity3D 教程系列第 16 篇】Scene视图很清楚,但是Game视图却很模糊的解决方案
- 重磅 | 推荐一款技术人必备的写作神器 (支持多平台自动同步)