php中命名空间面向对象访问控制接口

Posted 苦海123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中命名空间面向对象访问控制接口相关的知识,希望对你有一定的参考价值。

命名空间:

php中命名空间:解决自己编写的代码和php内置及第三方的函数、常量、类命名冲突问题(在不同的命名空间可以定义相同名称的常量、类、函数);及为繁琐的命名创建一个别名,具体如下:

	 //1.简单定义命名空间:
    namespace mydemo;//定义命名空间使用关键字namespace
    echo '要执行的代码';
    
    //2.上面方式可以在一个文件中定义多个命名空间,但是不推荐,推荐如下方式:
    namespace mydemo1{
      echo '要执行的代码块1';
    };
    namespace mydemo2{
      echo '要执行的代码块2';
    };
    
    //3.有的时候需要将全局的非命名空间的代码和命名空间的代码结合使用,此时只需要将全局非命名空间中的代码放入namespace{}大括号中,注意:此时没有命名名称,如:
    namespace mytest{echo '要执行的代码'}namespace{echo '全局非命名空间的代码'};
    
    //4.注意:在命名空间之前不能出现非php代码,包括空白符等,但是用于声明文件编码方式的declare可以,如:
    declare(encoding='UTF-8');
    namespase mydemo;
    
    //5.子命名空间:和文件的目录相似,php允许命名空间名称层次化,如:
    namespace mydemo\\test;
    $str = 'hello';//此时字符串访问方式:\\mydemo\\test\\$str;

命名空间的使用:

	//1.访问其他命名空间的变量、类、函数:若要访问其他命名空间变量、类、函数,那么就要在名称前面加路径,如:
    namespace myspace1;
    $num = 2;
    class car {function run(){echo '车子跑'}};
    function f1(){echo '这是f1函数'};
    namespace myspace2;
    echo \\myspace1\\$num;//在myspace2中访问myspace1中的变量、类、函数,注意前面也要给斜杠
    var_dump(new \\myspace1\\car());
    \\myspace1\\f1();
    
    //2.定义子命名空间:命名空间类似文件夹目录,可以在一个名空间中定义子命名空间,语法是在命名空间名称前面加父级路径,如:
    namespace fatherspace;
    $num = 2;
    namespace fatherspace\\sonspace;//此时在fatherspace命名空间下面定义了一个sonspace命名空间,当然这里可以定义多个子命名空间,也可以定义多层
    $num = 3;
    
    //3.公共空间中的变量、类、函数:指没有在命名空间内定义的变量、类、函数,公共空间中定义的变量、类、函数可以直接在命名空间中使用,但是使用时要加\\表示在根目录下;使用完依然是公共空间的,如:
    $num = 3;
    namespace myselfspace;
    echo \\$num;
    
    //4.给命名空间定义别名:php中使用use关键字定义别名,如:
    use mydemo\\f1 as fn;//当别名为最后一个层级时,可以省略as及别名,如:use mydemo\\classname等同于:use mydemo\\classname as classname;

面向对象:

对象是一个信息或对信息进行处理的描述所组成的整体,是对现实世界的抽象,生活中万物皆对象。

面向对象内容:

	 //1.类:定义一件事物的抽象特点,包含数据的形式及对数据的操作,类的定义如下:
    class Car{
      var $car1;
      var $car2 = '五菱';
      function run(){echo '跑';};
    }//2.对象:是类的实例,在类被创建后,通过new关键字来实例化一个对象,如:
    $boama = new Car;//可以通过new关键字使用同一个类创建多个对象。
    
    //3.成员变量:定义在类里面的变量,该值对外是不可见的,但可以通过成员函数访问,当类被实例化后该变量称对象属性。
    class Car{
      var $car1;//成员变量
      function run(){echo '跑';};
    }
    //4.成员函数:定义在类里面可以访问对象的数据。
    class Car{
      var $car1;
      function run(){echo '跑';};//成员函数
    }
    //5.继承:子类共享父类数据结构和方法的机制。
    class mycar extends Car {};//php使用关键字extends继承一个类,php不支持多继承。
    
    //6.父类:一个类被其他类继承后可称为父类,别名基类,超类。
    
    //7.子类:继承了其它类的类称为子类,别名派生类。
    
    //8.多态:多态指相同的函数或方法作用于多种类型的对象上获得不同的结果这一现象。
    
    //9.重载:同名不同参数的函数或方法之间互相称重载。
    
    //10.抽象性:将有一致属性和行为的对象抽象成类。
    
    //11.封装:将现实中某个客体的属性和行为捆绑在一起,并放置在一个逻辑单元中。
    //12.构造函数:用于创建对象时初始化对象(变量赋值的过程),总与new 一起使用。
    
    //13.析构函数:对象结束生命周期后,析构函数中使用delete释放内存空间,和构造函数相反。
    class Car {
       function __construct() {//类中的构造函数通过__construct声明,$this指这个类->可以理解为的,和js中冒号 :差不多
           $this->name = "baoma";
       }
       function __destruct() {//类中解析函数通过__destruct声明,在解析函数中写入属性或方法对属性或方法进行销毁。
           print "销毁 " . $this->name . "\\n";
       }
    }

访问控制:

php对属性或方法的控制是通过前面添加关键字控制:public公有、protected受保护、private私有,如:

	class Car{
      private var $car2 = 'baoma';
      public function run(){echo '跑';};
    }

接口:

用来实现某些方法而无需定义具体方法,使用关键字interface定义接口,接口中的所有方法都是公有的,要实现一个接口使用implements操作符,如:

	interface temapi{//定义一个接口
      public function setnames($name);
    };
    class dog implements temapi{
      public function setnames($name){
        $this->vars[$name]= 'xiaohei';
      };
    };

提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦海

以上是关于php中命名空间面向对象访问控制接口的主要内容,如果未能解决你的问题,请参考以下文章

PHP命名空间面向对象以及构造函数

TS编程——面向对象随手录——接口_命名空间——重构javaScrip 3D引擎代码部分——函数

PHP面向对象 – 命名空间

面向对象第八天----命名空间

Java中面向对象的三大特性之封装

面向对象思想