美文网首页
PHP开发面向对象考点

PHP开发面向对象考点

作者: 一位先生_ | 来源:发表于2021-10-12 15:27 被阅读0次

PHP 魔术方法和触发场景:

__tostring()方法是在对象当作字符串输出时被自动调用   __invoke()方法是在对象当作方法时被自动调用

```

<?php

class Tomato{

public function __tostring()

{

return"string";    

 }

public function __invoke()

{

echo"invoke";    

 }

}  

$tomato = new Tomato();

echo $tomato;//对象当作字符串输出

$tomato();//对象当作方法

```

__call(),__callStatic()

__call()实现对方法的重载  __callStatic()实现对静态方法的重载 - implode()等价于spilt()方法

<?php

class Tomato {

public function __call($name, $arguments)

{

echo'$name:'.$name.'$arguments:'.implode(", ", $arguments);    

 }

public static function __callStatic($name, $arguments)

{

echo'$name:'.$name.'$arguments:'.implode(", ", $arguments);    

 } 

 }

 $tomato->runSet("Allo","Bllo");//类内部没有该方法,是通过__call()重载实现的

Tomato::deRunSet("Cllo","Dllo");//类内部没有该静态方法,是通过__callStatic()重载实现的

?>

```

__get(),__set()__isset(),__unset(),__empty()

- 获取对象属性时__get()被自动调用,一般用于获取私有属性 - 设置对象属性时__set()被自动调用 - isset判断是否存在该属性,empty相反 - 释放变量时__unset(),被自动调用

<?php

class Tomato {

private $name ="火星情报局";

public function __get($name)

{

//参数为属性名

if(isset($name)){ //isset判断是否存在该属性,与empty相反echo"存在";

echo$this->name;          

}else{

return null;          

}    

 }

public function __set($name, $value){

//参数为 属性名、属性值

echo $this->$name = $value;//设置属性

}

public function __unset($name){

//释放属性变量时,被自动调用

echo"null";   

 } 

$tomato->name;//获取元素属性

$tomato->name ="提莫队长";//设置元素属性

unset($tomato->name);//释放变量

?>

```

__clone()

__clone(),在对象被克隆时调用 - 克隆后的对象具有与原对象相同的所有属性、方法 - 克隆后的对象属性的改变不影响原对象,即互不影响 __clone()方法内部可以设置哪些属性不必克隆,用自己设置即可

<?php

class Tomato {

private $name ="火星情报局";

private $title ="沈梦晨";

private $data ="2016";

public function __clone()

{

echo $this->name ="老坛酸菜";

//该属性不必克隆,用自己设置的

$tomato2 =clone$tomato;//克隆对象

$tomato2->data="2017";//通过克隆对象该变属性

$tomato->name;//获取原对象属性

$tomato->title;//原对象属性

$tomato->data;//获取原对象属性,发现没有改变

$tomato2->name;//获取现对象属性

$tomato2->title;//克隆对象属性,与原对象不一样

$tomato2->data;//获取克隆对象属性,发现改变

?>

```

综上,克隆后的对象属性的改变不影响原对象

克隆的过程中,可以自己设置自己的值,没必要完全克隆(根据实际情况)

PHP设计模式:

工厂模式

单例模式

注册数模式

适配器模式

观察者模式

策略模式

相关文章

  • PHP开发面向对象考点

    PHP 魔术方法和触发场景: __tostring()方法是在对象当作字符串输出时被自动调用 __invoke()...

  • 面向对象相关

    面向对象: 题: 写出php类权限修饰符; 延伸考点: 1. 面向对象的封装、继承、多态; 2. 魔术方法、 3....

  • JavaScript面向对象核心知识归纳

    面向对象 概念 面向对象就是使用对象。面向对象开发就是使用对象开发。 面向过程就是用过程的方式进行开发。面向对象是...

  • 2.11面向对象相关的考点

    考官考点PHP的类全线控制修饰符延伸:面向对象的封装、继承和多态延伸:魔术方法延伸:设计模式 权限修饰符:publ...

  • 2019-07-28

    在PHP语言的使用中,可以分别使用面向过程和面向对象, 而且可以将PHP面向过程和面向对象两者一起混用。

  • 好程序员web前端学习路线之Javascript面向对象

    好程序员web前端学习路线之Javascript面向对象,面向对象是使用对象,面向对象开发就是使用对象开发。 面向...

  • PHP初学者最常遇到的8个错误及解决思路!

    PHP由于即可以面向过程也可以面向对象开发,被广泛认为是最容易学习的编程语言。在源码时代的全栈学科,PHP被作为全...

  • PHP初学者最常遇到的8个错误及解决方法

    PHP由于即可以面向过程也可以面向对象开发,被广泛认为是最容易学习的编程语言。在源码时代的全栈学科,PHP被作为全...

  • PHP面向对象开发api接口

    1、json_encode() 将数组转换成json格式,且该函数仅支持utf8格式的数据。2、iconv(‘ut...

  • 智能油桶后台架构

    ThinkPHP 开发手册 ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏...

网友评论

      本文标题:PHP开发面向对象考点

      本文链接:https://www.haomeiwen.com/subject/cubkoltx.html