• modern php笔记---2.1、特性(命名空间、特性、性状)


    modern php笔记---2.1、特性(命名空间、特性、性状)

    一、总结

    一句话总结:

    legend2是真的非常好用,资质起码提升5倍,也就是学习效率提升了起码5倍

    1、命名空间实质?

    从技术层面来看,命名空间只是php语言中的一种记号,php解释器会将其作为前缀添加到类、接口、函数和常亮的名称的前面。

    2、厂商命名空间?

    厂商命名空间是最重要的命名空间,厂商命名空间是最顶层命名空间,用于识别品牌或所属组织,必须具有全局唯一性。子命名空间没那么重要,不过有助于组织项目的代码。

    3、use关键字导入?

    使用use关键字导入代码时无需在开头加上符号,因为php假定导入的是完全限定的命名空间。

    4、一个文件中使用多个命名空间?

    类中直接namespace关键字声明即可

    <?php
    namespace Foo{
        //在这声明类、接口、函数和常量
    }
    namespace Bar{
        //在这声明类、接口、函数和常量
    }

    5、php接口是什么?

    接口是两个php对象之间的契约,其目的不是让一个对象依赖另一个对象的身份,而是依赖另一个对象的能力。

    6、使用接口好处?

    使用接口编写的代码更灵活,能委托别人实现细节。

    7、php性状(trait)?

    性状是类的部分实现(即常量,属性和方法),可以混入一个或多个现在的php类中。
    性状有两个作用:表明类可以做什么(像是接口);提供模块化实现(像是类)。

    8、让两个无关的php类具有类似的行为,应该怎么做呢?例如,RerailStore和Car两个php类的作用十分不同,而且在继承层次结构中没有共同的父类。不过这两个类都应该能使用地理编码技术转换成经纬度,然后在地图上显示。?

    1、父类:我的第一反应是创建一个父类Geocodable(这么做不好),让Retailstore和Car都继承这个类。这种解决方法不好,因为我们强制让两个无关的类继承同一个祖先,而且很明显,这个祖先不属于各自的继承层次结构。
    2、接口:我的第二反应是创建Geocodable接口(这么做更好),定义实现地理编码功能需要哪些方法,然后让Retailstore和car两个类都实现这个接口。这种解决方法好,因为每个类都能保有自然的继承层次结构。不过,我们要在两个类中重复实现相同的地理编码功能,这不符合DRY原则。
    3、性状:我的第三反应是创建Geocodable性状(这么做最好),定义并实现地理编码相关的方法,然后把在Retailstore和Car两个类中混入这个性状。这么做不会提乱这两个类原本自然的继承层次结构。

    9、如何创建性状?

    <?php
    trait MyTrait{
        //这里是性状的实现
    }

    trait关键词,像类和接口一样

    10、如何使用性状?

    PHP性状的使用方法很简单,把use MyTrait;语句加到PHP类的定义体中即可。

    <?php
    class MyClass{
        use MyTrait;
        //这里是类的实现
    }

    11、性状执行的原理?

    PHP解释器在编译时会把性状复制粘贴到类的定义体中,但是不会处理这个操作引入的不兼容问题。如果性状假定类中有特定的属性或方法(在性状中没有定义),要确保相应的类中有对应的属性和方法。

    二、内容在总结中

     
  • 相关阅读:
    codevs 2010 求后序遍历
    code vs 1013 求先序排列
    codevs 3143 二叉树的序遍历
    codevs 3083 二叉树
    找树的根和孩子
    1501 二叉树最大宽度和高度
    1758:二叉树
    sql 如何把查询得到的结果如何放入一个新表中
    2011的n次方
    计算2的N次方
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/11315800.html
Copyright © 2020-2023  润新知