Blogger Information
Blog 18
fans 0
comment 0
visits 13327
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
类中常量定义使用、命名空间的分级、trait类的功能及使用场景-2019-10-10
无聊了的博客
Original
728 people have browsed it

1、分级命名空间,并实现类的自动加载

实例

<?php
//demo1.php
namespace _1010\one;

class demo1
{
    static function demo(){
        echo __METHOD__;
    }
}

//demo2.php
namespace _1010\two;

class demo2
{
    static function demo(){
        echo __METHOD__;
    }
}

//autoload.php  负责处理类的自动加载
spl_autoload_register(function($class){
    $str = substr($class,strrpos($class,'\\')+1);
    $path = $str . '.php';
    if(file_exists($path)){
        include $path;
    }else{
        echo '不存在';
    }
});

//demo3.php
use _1010\one\demo1;
use _1010\two\demo2;
demo1::demo();
echo '<br>';
demo2::demo();

运行实例 »

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

2、trait 类,理解功能与使用场景

实例

<?php

trait Success
{
    function suc(){
        echo '<script>alert("success")</script>';
    }
}

trait Fail
{
    function Fail(){
        echo '<script>alert("fail")</script>';
    }
}
class Test1
{
    function demo(){

    }
}

class Test2 extends Test1
{
    use Success,Fail;
    function __construct($flag)
    {
        if($flag){
            $this->suc();
        }else{
            $this->Fail();
        }
    }
}

$obj = new Test2(true);

运行实例 »

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


总结:

1、针对相同的类,可以设置不同的命名空间用以区分不同空间下的类

2、use 用于导入空间,默认从全局开始,可以省略反斜杠

3、对于相同的空间可以使用as设置别名,防止发生冲突

4、trait 可以作为一个伪类,不能通过new进行实例化能被别的类进行多次继承,可以实现类的多次继承

Correction status:qualified

Teacher's comments:将trait做为伪类, 这个概念提得好
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