Blogger Information
Blog 33
fans 0
comment 0
visits 20771
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
面向对象进阶:匿名类、trait、构造函数2018年9月5日
马聪 15558002279的博客
Original
542 people have browsed it
  1. 匿名函数的定义和使用方式:


  2. 实例

    <?php
    //匿名类,就是不指定名称的类,一次性使用
    echo (new class{
    	private $sum;
    	function handle($a,$b){
    		//嵌套一个匿名类,并将$a和$b参数传入匿名类中,返回这个起末的阶乘
    		return (new class($a,$b){
    				private $start;
    				private $end;
    				function __construct($a,$b){
    					$this->start = $a;
    					$this->end = $b;
    				}
    				//定义一个阶乘方法
    				function msum(){
    					$sum =1;
    					foreach (range($this->start,$this->end) as $v) {
    						$sum*=$v;
    					}
    					return $sum;
    				}
    		})->msum();
    
    	}
    
    })->handle(1,10);
    
    //匿名函数可继承其他类
    echo "<hr>";
    class fn{
    		protected $start;
    		protected $end;
    		function __construct($a,$b){
    			$this->start = $a;
    			$this->end = $b;
    		}
    		//定义一个阶乘方法
    		function msum(){
    			$sum =1;
    			foreach (range($this->start,$this->end) as $v) {
    				$sum*=$v;
    			}
    			return $sum;
    		}
    }
    //继承直接使用
    echo (new class(1,5) extends fn{
    	function handle(){
    		return $this->msum();
    	}
    })->handle();
    ?>

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

2.trait 类的定义和使用(理解成include就行)

实例

<?php
//trait类的声明和使用
trait Eat{
	public $food;
	function eat($food){
		$this->food = $food;
		echo "<br>我会吃".$this->food;
	}
}
trait Drink{
	public $drink;
	function drink($drink){
		$this->drink = $drink;
		echo "<br>我会喝".$this->drink;
	}
}

class Animal{
	function say(){
		echo "我的名字是:";
	}

}
class Cat extends Animal{
	use Eat;
	use Drink;
	function animal_name(){
		echo "猫";
	}
}
$cat = new Cat();
echo $cat->say(),$cat->animal_name(),$cat->eat('鱼'),$cat->drink('milk');
//输出结果
// 我的名字是:猫
// 我会吃鱼
// 我会喝milk
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

3.类的自动加载:

<?php

//类的自动加载函数

spl_autoload_register(function ($className){

    require $className.'.php';

    //存在命名空间的情况下

//    $className = str_replace("\\","/", $className);

//    require './class/'.$className.'.php';

});

$cat = new Cat();

$cat->eat();

?>

4.面向对象编程思想:

把方法和属性组成一个类,这个类表示一类事物的统称,这个类的目的是去实现各种功能,实例化一个类就是一个对象。这个对象就是面向对象编程中的最基本的单位。这个对象可以实现相对应的功能,输入参数,返回结果。无数个对象排列组合形成一个系统。

完成一个类的封装后,就可以把这个类看做一个整体,不用管里面的具体代码是什么,只要知道有什么功能,需要什么参数即可。提高了代码的安全性和复用性。

面向对象的编程思想取自于日常生活,每个东西都有它的特征和功能,特征就是类的属性,功能就是类的方法。把抽象的东西实体化,可以让程序员更好的理解,提高开发的效率。

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post