热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP简明教程面向对象基础1

PHP简明教程面向对象基础1类中魔术方法类中魔术方法不能被手动调用,几乎每个魔术方法都有触发时机和参数,PHP不能调用类中没有实现的魔术方法方法名触发时机参数1参数2备注__get
PHP简明教程

面向对象基础 1

类中魔术方法

类中魔术方法不能被手动调用,几乎每个魔术方法都有触发时机和参数,PHP不能调用类中没有实现的魔术方法

方法名触发时机参数1参数2备注
__get()对象访问类中private和protected属性时私有或被保护的成员变量的名字
__set()对象设置类中private和protected属性时私有或被保护的成员变量的名字设置的值
__construct()当一个对象被创建时继承时不会自动调用父类的该方法
__destruct()当一个对象被销毁时
__unset()当销毁私有成员变量时私有或被保护的成员变量的名字
__isset()当检测私有成员变量是否存在时私有或被保护的成员变量的名字
__call当调用类中没有的成员方法时调用的方法名传递的参数

继承

PHP在语法上只支持单继承,可以用接口来实现多继承

  • 基本语法

子类继承父类,就拥有了父类的成员变量和成员方法

访问权限
修饰符能否类外访问能否被继承
public可以可以
private不可以不可以
protected不可以可以
  • 重写
意义:当子类继承父类的方法后,重新在子类中实现这个方法
重写的种类
  1. 完全重写
    子类调用该方法后调用的是子类重写后的方法,父类调用该方法是父类自身的方法
  2. 扩展
    通过parent关键字先执行父类的方法,然后再增加自己的功能
  • parent关键字

class Father
{
public $name;
public $age;
public $height; function __construct($name, $age, $height)
{
$this->name = $name;
$this->age = $age;
$this->height = $height;
} function work()
{
echo '我每天辛辛苦苦的工作15个小时
';
}
}
class Son extends Father
{
public $weight;
public $girl;
public $money; function __construct($name, $age, $height, $weight, $girl, $money)
{
/*
$this->name = $name;
$this->age = $age;
$this->height = $height; */
//通过调用父类的__construct方法实现以上代码
parent::__construct($name, $age, $height);
$this->weight = $weight;
$this->girl = $girl;
$this->mOney= $money;
}
function work()
{
//echo '我每天喝着咖啡看着报纸清闲8个小时
';
//先执行父类的方法
parent::work();
//再写自己的代码
echo '我不仅工作的好,我还谈了一个对象,而且是厂花
';
}
}
$ming = new Son();
$ming->work();
//$lOng= new Father();
//$long->work();

  • final关键字

final修饰的class不能被继承

//A类不能被继承
final class A{}

final 修饰的成员方法不能被重写

class A{
final function func(){

}
}
class B extends A{
//不能对A类中func方法重写,因为func方法是final的
}

重写中的方法权限修改

private
越往后权限越高 重写的时候权限只能放大相等不能缩小

  • 类常量

定义方式:

使用define定义类外常量
使用const定义类内常量 定义常量的时候不能加权限修饰符

调用方法:

类外
类名::常量名 ($obj::常量名)
类内
self::常量名 ($this::常量名)

$this 对象
self 类
parent 父类

静态属性和静态方法

如果在成员属性或者成员方法前面加了static进行修饰,那么这个成员属性或者成员方法就不在属于某一个对象,而是属于整个类的

如果该成员属性发生了改变这个类的所有实例化对象的该属性都会发生改变

如果一个方法与他所在类型的实例无关,那么它就应该是静态的。所以所有的实例方法都应与实例有关

静态属性调用方法:

类外
类名::静态属性名 ($obj::静态属性名)
类内
self::静态属性名 ($this::静态属性名)

静态方法调用方法

类外
类名::静态方法名 ($obj::静态方法名,$obj->静态方法名)
类内
self::静态方法名 ($this::静态方法名,$this->静态方法名)

自动加载

命名规则:一个类是一个文件;类名与文件名相同;命名空间名和文件夹名相同

__autoload()

唯一写在类外的魔术方法

触发时机:当文件加载一个类的时候,并没有找到这个类,那么就会自动触发这个方法
参数:类名

简单实现

__autoload($className){
$file = ucfirst($className) . '.php';
include $file;
}

MVC

MVC设计方法

目录结构:

graph TB
MVC-->model模型
MVC-->view视图
MVC-->controller控制
MVC-->vendor第三方库

MVC详解:
由模型(model),视图(view),控制器(controller)完成的应用程序由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图;
MVC 是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用 MVC 应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。视图是用户看到并与之交互的界面。模型表示企业数据和业务规则。控制器接受用户的输入并调用模型和视图去完成用户的需求。
MVC 的优点:低耦合性、高重用性和可适用性、较低的生命周期成本、快速的部署、可维护性、可扩展性,有利于软件工程化管理
MVC 的缺点:没有明确的定义,完全理解 MVC 并不容易。不适合小型规模的应用程序。


推荐阅读
  • 如果讓你不依託任何前端框架(ReactVueAngular等等),純真用Javascript編寫一個網站運用,你還知道怎樣開闢嗎?舉個例子,產物司理讓你完成一個網頁,上面有一張貓咪 ... [详细]
  • 在C的世界里,语句块是封装的一种表现形式,而语句块大都以function的语法格式呈现。在使用function时,如何使得function ... [详细]
  • 深入分析 Linux 内核链表转
    引用地址:http:www.ibm.comdeveloperworkscnlinuxkernell-chainindex.html一、链表数据结构简介链表是一种常用的 ... [详细]
  • Joda-Time 学习笔记
    一Jode-Time介绍任何企业应用程序都需要处理时间问题。应用程序需要知道当前的时间点和下一个时间点,有时它们还必须计算这两个时间点之间的路径。使用JDK完成这项任务将非常痛苦和繁琐。既 ... [详细]
  • 关于内核中的jiffies变量,可通过下图解释。在内核中很多函数的参数都是都是以jiffies为单位的,如定时器中mod_timer(&timer,ji ... [详细]
  • 嗯,这在文档中并不是那么清楚.我正在使用给定的构建器来减小大小,你只需要通过乘以你的条件来改变除法;privatestaticclassMyDragShadowBuilderext ... [详细]
  • 加密你的php源代码,加密你的php源代码错误
    本文目录一览:1、PHP-php源代码加密是怎么做到的 ... [详细]
  • 需求开发关注、取消关注功能。统计用户的关注数、粉丝数。关键若A关注了B,则A是B的Follower(粉丝),B是A的Followee(目标)。关注的目标可以是用户、帖子、题目等,在 ... [详细]
  • 首先请求进入DispatcherServlet由DispatcherServlet从HandlerMappings中提取对应的Handler此时只是获取到了对应的Handle,然后得去寻找对应的适配器,即:HandlerAdapter拿到对应HandlerAdapter时,这时候开始调用对应的Handler处理业务逻辑了(这时候实际上已经执行完了我们的Controller)执行完成之后返回一个Mo ... [详细]
  • Memcached的delete命令用于删除memcached服务器现有的键。语法memcacheddelete命令的基本语法如下所示:deletekey如果键成功删除,则返回DE ... [详细]
  • 前言在我们的项目里经常会用到ViewPager+Fragment实现选项卡滑动切换的效果,ViewPager会预加载下一个Framgment的内容,这样的机制有优点也有缺点:预加载 ... [详细]
  • 树状数组总结——详解(单点/区间查询, 单点/区间修改, 逆序对)
    http:blog.csdn.netwzw1376124061articledetails731882382017-06-1317:2464人阅读评论(0)收藏举报版权声明:!!! ... [详细]
  • LibTorch之优化器SGDtorch::optim::SGDoptimizer(net-parameters(),*lr*0.01);官方案例使用#include ... [详细]
  • 配置php连接mysql,PHP连接
    本文目录一览:1、dw中php怎么连接mysql数据库 ... [详细]
  • 2021程序员必看面试指南进大厂年薪百万需要付出多少努力?
    进大厂几点校内募你必须知道!!!1、大部分公司的HR都说我们不看重学历(骗你的!),但是如果你的学校不出众的话,很难在一堆简历中脱颖而出,除非你的简历上有特别的亮点, ... [详细]
author-avatar
手机用户2702937647
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有