美文网首页
PHP命名空间及命名空间与文件路径的关系

PHP命名空间及命名空间与文件路径的关系

作者: 逍遥_9985 | 来源:发表于2019-02-13 18:14 被阅读0次

1、命名空间的引入原因

命名空间的引入是为了解决变量或者函数的名字冲突;

举个例子来说,

对于文件A.php 、B.php 和C.php 这三个文件;

A.php 文件中 有变量定义为 $a=1;

B.php 文件中 有变量定义为 $a=1;

文件 C.php 中 引用 A 、B文件,并使用 变量 $a;

那么C.php中会使用何值?

2、关于同名变量中值的定义

此时系统不会出现任何错误;但会出现下列问题:

一、include “a.php”;

      include "b.php"

则使用的是b.php 中定义值;

二、include "b.php";

      include "a.php";

则使用的是a.php 中的定义值;

由此可见,文件引入的顺序不同,变量的定义值完全不同。采用的覆盖的原则;因此具有变量值的不确定性。

3、命名空间的本质

PHP 命名空间可以解决以下两类问题:

1.用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。

2.为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

命名空间的本质还是一个标识符,这个标识符用来作为容器,来标识该代码空间下的所有内容。

在被引用的PHP 文件中引入了命名空间之后,如果应用部分未使用空间名称,会直接造成变量无法解析。因为此时的变量名称已经改变了,全称应该是空间名+本地变量名称。

4、命名空间与文件路径的关系

<?php

header("Content-type:text/html;charset=utf-8");

include_once "./modelA/a.php";

include_once "./modelB/a.php";

use modelA\a;

use modelB\a as b;

a::out();

echo "<br/>";

$b = new b();

$b->out();

---------------------

在这种方法中,需要使用iniclude_once()方法引入文件,也需要使用命名空间。可能有些人会认为:不是已经使用use modelA\a了吗,那就应该把文件引入进来了,为什么还要include_once()一下呢?那是因为use modelA\a仅仅是声明要使用modelA命名空间下的a文件,可以理解为逻辑上的使用,为了防止重名。而include_once()则是物理上的使用,将代码导入到c.php中。use 和 include缺一不可。

---------------------

Laravel 采用 classmap 方式进行自动加载(autoload),PHP虽然有了命名空间这个高级特性,但是这只是逻辑关系,require 文件还是要有的。

这个类和文件的对应关系就存在 /vendor/composer/autoload_classmap.php ,每次 composer dump-autoload 都会重新编译、生成。

相关文章

  • PHP命名空间及命名空间与文件路径的关系

    1、命名空间的引入原因 命名空间的引入是为了解决变量或者函数的名字冲突; 举个例子来说, 对于文件A.php 、B...

  • PHP命名空间和公共空间

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

  • PHP新特性之命名空间、性状和生成器

    1.命名空间 命名空间是什么? 1).命名空间在PHP 5.3中被引入,类似于文件夹的功能。例如Symfony框架...

  • ThinkPHP 命名规范

    命名规范: 目录与文件: 目录 小写+下划线; 类库和函数文件以 .php为后缀; 类的文件名以命名空间定义,命名...

  • PHP自学计划-命名空间-17

    命名空间 PHP中的命名空间类似Java中的包,假设有多个文件有同名的函数,使用命名空间可以很好的区分 举例:

  • 2022-03-13 保存表格

    1 加载autoload.php 载入composer自动加载文件使用命名空间里的类文件,(可以给类文件的命名空间...

  • php命名空间与自动加载

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

  • 开发规范

    目录和文件 目录使用小写+下划线; 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致; 类文件...

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

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

  • PHP面向对象设计模式学习笔记

    PHP面向对象的基础知识1.命名空间 命名空间的名字要和文件的绝对路径一致2.类的自动载入 3.RSO-0 规范 ...

网友评论

      本文标题:PHP命名空间及命名空间与文件路径的关系

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