美文网首页
php命名空间

php命名空间

作者: 豆豆_06fa | 来源:发表于2019-02-14 19:51 被阅读0次

最近一段时间在研究php框架,一直想的什么时候才能开发出自己的框架,当然这是为了提升自己的编程水平,同时能把平时学的零散的东西糅合在一块熟练应用。但是开发一个框架根本不知道如何做起,先开发什么,虽然php的框架也不少,但是都是如何应用,没有文档和视频可以学习,这是让我特别郁闷的事情,相信不少想自己开发框架玩的小伙伴都有类似的感受,郁闷归郁闷,自己还是动手做了,做的时候困难和想象的一样难,从一开始就有点蒙了。

  那就是命名空间的使用及use引入。看了很多网上的说法,也看了官方文档,意思大概明白,也很好理解,命名空间还好说,给这个空间起个名字嘛,但是use具体操作起来就不行 了,怎么也搞不通。后来看一个yii学习视频才恍然明白。

  比方说建三个文件。

  第一个文件 A.php,里边有两个类,命名空间是 a\b\c;

<?php

namespace a\b\c;

class Apply{

  function get_info(){

    echo 'this is A Apply';

  }

}

class C{

  function info(){

    echo 'this is info';

  }

}

  第二个文件 B.php 命名空间 a\b\d;

<?php

namespace a\b\d;

class Apply{

  function get_info(){

    echo 'this is B Apply';

  }

}

  第三个文件 index.php ,用来使用上边两个文件的类。

  比方说我们现在想实例化A.php里的类,该怎么实现呢?

首先要包含这个文件 require_once(‘A.php’);

然后 use a\b\c;? 还是a\b\c\A? 起初我也是这么认为的。其实这是错的,use应该是这样的,命名空间\这个空间下你要实例化类的类名。比方说我们要实例化 A.php里的Apply类,那么 use a\b\c\Apply; 这就相当于引入这个类,接下来再 new Apply();调用里边的方法,跟平常是一样的。如果要实例化类C,就 use a\b\c\C;

  注意:use不等于require_once或者include,use的前提是已经把文件包含进当前文件。

顺便提一句,在MVC模式中,类名和文件名是相同的,所以use的时候会让不了解的人以为use后面跟的是文件名,我之前就这么以为的。其实use的还是类名。

有的人可能问了,那我不同的命名空间下,有相同的类名,在同一个文件中使用怎么办?比方说我们上边的index.php,把A.php和B.php都包含进来,然后new Apply();这个时候是会报错的,解决方案就是起别名,比方说 use a\b\d\Apply as b; 此时我们new 的时候不应该写成 new Apply();而是new b();这样就不会发生冲突了。

相关文章

  • PHP命名空间和公共空间

    PHP命名空间 PHP 命名空间(namespace)是在PHP 5.3中加入的。PHP 命名空间可以解决以下两类...

  • php命名空间与自动加载

    命名空间(PHP 5 >= 5.3.0, PHP 7) 什么是命名空间?从广义上来说,命名空间是一种封装事物的方法...

  • PHP 新手入门指南 - 使用命名空间

    首先来了解一下命名空间: (PHP 5 >= 5.3.0, PHP 7) 什么是命名空间?从广义上来说,命名空间是...

  • php初级讲义11-命名空间

    命名空间的概念 命名空间是一种封装事物的方法。 命名空间用namespace关键字来声明。 以PHP或php为名或...

  • php命名空间

    [PHP命名空间的作用、为什么使用命名空间?] 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或...

  • PHP命名空间

    一、命名空间概述 1、什么是命名空间 1)从广义上来说,命名空间是一种封装事物的方法。2)在很多地方都可以见到这种...

  • PHP——命名空间

    PHP命名空间的作用、为什么使用命名空间 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出...

  • php 命名空间

    命名空间 什么是命名空间? 广义来说,是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目...

  • PHP命名空间

    什么是命名空间 命名空间是在php5.3以后的版本引入的。命名空间是一个抽象概念,在编程中用于封装划分一组方法or...

  • PHP命名空间

    可以访问const的、函数和对象; define不可以! 1,非限定命名空间:echo a 2,限定命名空间ech...

网友评论

      本文标题:php命名空间

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