设为首页 收藏本站
查看: 538|回复: 0

[经验分享] PHP 学习小结(四)—— PHP 面向对象开发

[复制链接]

尚未签到

发表于 2017-3-25 11:52:35 | 显示全部楼层 |阅读模式
  1. 建立类




class MyPc {
var $key;
// 建议使用public,而不是var
public $name;
public function vod() {
echo "PHP 100 视频教程";
}
}
// 输出PHP 100 视频教程
$pc1 = new MyPc();
$pc1->vod();
  2. 对象中的$this关键字、__construct()构造函数和析构函数__destruct()




PHP4
的时候使用function MyPc()
进行初始化


class MyPc {
public $name;
function __construct($name) {
$this->name = $name;
}
public function vod() {
//echo "PHP 100 视频教程";
echo $this->name;
}
// 规则:后进先出:先释放后建立的对象
// 垃圾回收机制
function __destruct() {
// ...
}
}
// 输出PHP 100 视频教程
$pc1 = new MyPc("PHP 100 视频教程");
$pc1->vod();

  
3. 类的封装和应用





封装关键字:public, protected, private

封装相关函数:

private $name;
function __set($name, $value) {
$this->$name = $value;
}
function __get($name) {
}
// 赋值
$pc1->name = "sss";
// 取值
echo $pc1->name;
  4.  类的继承和应用





继承关键字:extends

重载:

class Root {
function dayin() {
return "Root print <br>";
}
}
class Son extends Root {
function dayin() {
// 重载dayin()函数
return Root::dayin()."Son print<br>";
}

}
// 输出Root print
//      Son print
$p = new Son();
echo $p->dayin();
  5. 类的抽象方法和类





一个类中至少有一个
方法是抽象的
不可实例化
,只能用它的继承类来实例化

抽象方法不允许有{}


抽象关键字:abstract

abstract class cl1{
abstract function fun1();
}
class cl2 extends cl1 {
function fun1() {
echo "第一个";
}
}
  6. 类中常用关键字





关键字:final


当定义类
的时候该类将不能被继承
,当用来定义方法
的时候该方法将不能被重载



关键字:self


  • 用来用类访问当前类中的内容的关键字,类似与$this
    关键字,但$this是需要类实例化以后才可以使用,self 可以直接访问
    当前类中的内部成员
  • self一般用来访问类中的:静态成员
    ,常量
    ,或者其他定义内容
  关键字:static



  • 用来定义类的静态属性或方法,可以在类未被实例化
    时使用,静态属性单独占用内存而不会因创建多个对象时而导致同样的方法或者属性重复占用。

  • 静态方法内部禁止出现非
    静态内容

  • $this不能访问
    静态属性
  关键字:const


用来定义类中的常量,类似PHP外部定义常量
的关键字define()

  const只能修饰类当中的成员属性
建议大写
常量

常量不使用$
符号



final class MyPc {
// 静态属性
static $name = "我的电脑";
// 常量
const USER = "我的";
final function power() {
echo self::$name."电脑开机中......"."<br>";
echo self::USER;
}
}
$p = new MyPc();
$p->power();
//  直接访问静态属性
echo MyPc::$name;
  7. 类中接口的应用





继承后
接口,单
继承多
接口

关键字:interface、implements
抽象类:


1、类中至少有一个抽象方法

2、抽象方法前需加abstract
接口:


1、类中全部为抽象方法

2、抽象方法前不用加abstract

3、接口抽象方法属性为public

4、成员属性必须为常量
共同点:


1、本身都不能被实例化,必须被继承或者引用

2、继承或者引用后,需要把所有抽象方法重载方可使用

interface demo {
const NAME = "名称";
function fun1();
}
interface demo2 {
function fun2();
}
class mypc implements demo, demo2 {
function fun1() {
echo "======";
}
function fun2() {
echo "======";
}
}
  
8. 类中多态的应用




instanceof
用来测定一个给定的对象是否来自
指定的对象类

class A {}
class B {}
$thing = new A;
if ($thing instanceof A) {
echo 'A';
}
if ($thing instanceof B) {
echo 'B';
}
  
9. 总结篇




对象描述的配置
:__tostring()

class My {
function __tostring() {
echo "test";
}
}
$p = new My();
echo $p;
  
对象方法的异常处理
:__call($funname, $arr_value)

// 调用一些不存在的对象方法的异常处理,使程序继续正常运行
class My {
function __call($n, $v) {
echo "错误的方法名".$n;
echo "错误的参数".print_r($v);
}
}
  
克隆对象的应用
:__clone()

class My {
function __clone() {
echo "克隆时自动调用的函数";
}
}
$a = new My();
$b = clone $a;
  
自动载入对象的方法
:__autoload()

// 快速取得对象名称并自动载入进当前页面
function __autoload($class_n) {
// include("mypc.php");
include($class_n.".php");
}
$p = new Mypc();
$d = new demo();
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-355206-1-1.html 上篇帖子: 【PHP应用】PHPer 必备的 PHP日期 循环 知识 下篇帖子: PHP网站安全,避免PHP网站受到攻击的方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表