资讯专栏INFORMATION COLUMN

php 命名空间学习(一)

hsluoyz / 3246人阅读

摘要:另外,在目录外访问文件时,我们必须将目录名以及目录分隔符放在文件名之前得到。这就是命名空间,其目的是为了区分不同目录的同一文件,或者同一方法。为很长的标识符名称通常是为了缓解第一类问题而定义的创建一个别名或简短的名称,提高源代码的可读性。

1.什么是命名空间?

    文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,
但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录/home/greg 
外访问 foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前
得到 /home/greg/foo.txt。
    这就是命名空间,其目的是为了区分不同目录的同一文件,或者同一方法。
    详细:
   1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之
间的名字冲突。
   2.为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个
别名(或简短)的名称,提高源代码的可读性。

2.php支持命名空间

php >=5.3.0 是支持命名空间的

3.命名空间关键字

PHP支持两种抽象的访问当前命名空间内部元素的方法:
    __NAMESPACE__ 魔术常量
    namespace  关键字
    
    例如:
        namespace test;
        echo __NAMESPACE__;
    输出结果:
        test

4.简单例子

namespace test;

define("testHELLO","hello world!");
define(__NAMESPACE__ . "GOODBYE","goodbye cruel world");
define("GOODBYE","hahahha");
echo HELLO;
echo "
"; echo GOODBYE; echo "
"; echo GOODBYE; echo "
"; echo estGOODBYE; echo "
"; echo testGOODBYE; //Fatal error: Undefined constant "test estGOODBYE" in /mnt/hgfs/www/test/test.php on line 16 //会找不到test 所以要在之前加 表明当前test

结果

5.调用命名空间

namespace test;

namespace home;

class mao {
    public function __construct() {}

    /**
     * echo
     */
    public function mao_test() {
        echo "hello my namespace test";
    }
}
use homemao as hahah;
$obj = new hahah();
$obj->mao_test();

结果

6.多个命名空间的引用
test.php

namespace home;
class mao {
    public function __construct() {}
    /**
     * echo
     */
    public function mao_test() {
        echo "hello my namespace test";
    }
}
namespace home2;
class mao {
    public function __construct() {}
    /**
     * echo
     */
    public function mao_test() {
        echo "hello my namespace test2";
    }
}

index.php

namespace test;
require_once("test.php");
use homemao as java;
$obj = new java();
$obj->mao_test();
echo "
"; use home2mao as hah; $obj = new hah(); $obj->mao_test();

结果

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23226.html

相关文章

  • Laravel 5 系列入门教程(二)【最适合中国人的 Laravel 教程】

    摘要:原文发表在我的个人网站系列入门教程二最适合中国人的教程本教程示例代码见大家在任何地方卡住,最快捷的解决方式就是去看我的示例代码。 原文发表在我的个人网站:Laravel 5 系列入门教程(二)【最适合中国人的 Laravel 教程】 本教程示例代码见:https://github.com/johnlui/Learn-Laravel-5 大家在任何地方卡住,最快捷...

    未东兴 评论0 收藏0
  • php之道》读后总结 php学习纲要

    摘要:日期和时间使用类完成读取设置比较和计算日期与时间。单元测试单元测试是从编写开始,贯穿于整个开发周期的一种用于保证函数类和方法的行为与预期一致的编程方法。是应用的单元测试框架的业界标准,其他几个可选框架是行为驱动开发行为驱动开发有两种方式和。 《php之道》阅读地址:http://wulijun.github.io/php-the-right-way/#code_style_guide ...

    gitmilk 评论0 收藏0
  • php - namespace篇

    摘要:中命名空间可以解决两类问题用户编写的代码与内部的类函数常量或第三方类函数常量之间的名字冲突。在没定义命名空间的情况下,所有的常量类函数等都在全局空间下。注意访问任意全局类函数或变量,都可以使用完全限定名称,例如或者。 之前没有系统学习过PHP语言,直接上手TP框架了,所以认为namespace和use是TP框架的一部分,最近学习语言模块的时候遇到了这个问题,所以汇总了一下。 PHP中...

    jimhs 评论0 收藏0
  • TP5学习记录(Controller篇)

    摘要:可以在入口文件中定义,然后新建文件夹,达到将应用配置放到该文件的目的,这样方便将配置进行统一管理。动态配置返回数据类型功能同上张三男请求成功 ThinkPHP5 ThinkPHP是一个免费开源的、快速简单的、面向对象的、轻量级PHP开发框架。 为什么选择ThinkPHP5? ThinkPHP5采用了全新的架构思想; 优化了核心是一个颠覆性的版本; 支持composer方式安装; 对...

    leone 评论0 收藏0
  • PHP自动加载功能原理解析

    摘要:前言在开始之前,欢迎关注我自己的博客这篇文章是对自动加载功能的一个总结,内容涉及的自动加载功能的命名空间的与标准等内容。要实现第一步,第二步的功能,必须在开发时约定类名与磁盘文件的映射方法,只有这样我们才能根据类名找到它对应的磁盘文件。 前言 在开始之前,欢迎关注我自己的博客:www.leoyang90.cn 这篇文章是对PHP自动加载功能的一个总结,内容涉及PHP的自动加载功能、P...

    Imfan 评论0 收藏0

发表评论

0条评论

hsluoyz

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<