首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP 命名空间与类自动加载实现

1、从文件引入谈起 在 PHP 5.3 之前,要在一个 PHP 脚本中引入另一个 PHP 脚本中定义的代码(通常是函数或者类),需要借助 include、require、include_once、require_once...常量、变量、类、函数都归属于这个命名空间,然后我们在这个命名空间中声明了一个 Test 类,以及一个静态方法 print 来打印类名。...调用同一个命名空间中的类和函数,可以像上面代码这样直接调用,如果是不同命名空间的类和函数,则需要通过 use 关键字引入,我们在 ns 目录下新建一个 testing 子目录,并在该子目录下新建一个 Test.php...这里,我们将该子类所属命名空间声明为 App\Testing(同一个命名空间下不允许出现重名的类和函数),然后通过 use 关键字引入上级命名空间中的 Test 类,由于该类名与子类名同名,所以通过 as...要解决这个问题,可以借助上面提到的 spl_autoload_register 函数,将类名所属命名空间解析为对应的目录路径(这就是为什么要根据目录来组织命名空间),然后把通过 require_once

1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PHP命名空间

    当然是为了解决重名的问题了, 其实命名空间和Java中的包有着异曲同工之妙, Java中 a包下的Test类, 和b包下的Test类是两个类, 在使用的时候import不同包下即可, PHP中 a命名空间下的...Test类,与b命名空间下的Test类也是两个类....好了, 看PHP命名空间的简单应用: 是不是很简单? 但是我有如下问题? 不指定命名空间时, 如何? 不将类use进来,直接创建,如何? 若要引入不同命名空间的同名类, 如何? 问题解决 1....当不指定命名空间时, 为全局空间,公共空间 2. 不讲类use进来, 直接创建时, 将在当前命名空间下寻找 3....引入不同命名空间的同名类时, 可以使用别名来区分同名类 总结 PHP中命名空间与文件所处路径是没有关系的, 使用时, 最方便的就是直接使用根路径进行引入, 如果使用相对路径, 可能会混淆 其实, 就将命名空间当作路径来使用就可以了

    2.3K21

    【Python面试】 说说Python变量、函数、类的命名规则?

    废话不多说,开始今天的题目: 问:Python变量、函数、类的命名规则?...答:Python命名规范在编写代码中起到很重要的作用,虽然不遵循命名规范,程序可能也可以运行,但是使用命名规范可以更加直观地了解代码所代表的含义。...下面具体说说Python的命名规范: 1、类 单词首字母总是大写,私有类可以下划线开头。如MyClass。...class MyClass(): pass class MySchool(): pass 2、函数 函数名一律小写,若有多个单词用下划线隔开。另外,私有函数下划线开头 。...特定命名方式 主要是指 __xxx__ 形式的系统保留字命名法。项目中也可以使用这种命名,它的意义在于这种形式的变量是只读的,这种形式的类成员函数尽量不要重载。

    93540

    PHP匿名函数与匿名类详解

    但是在PHP内,由于匿名函数是通过闭包类实现的( Anonymous functions are implemented using the Closure class),因此多数人混淆了闭包技术和匿名函数...* @param Closure $closure 必填 表示闭包函数 * @param object $newThis 必填 闭包中 $this 所指的对象 传入类名代表当前类,静态方法不能传值...($cl2, new Person()); //output:男 $bcl3 = Closure::bind($cl3, new Person()); 匿名类 PHP 7 开始支持匿名类。...匿名类很有用,可以创建一次性的简单对象 // PHP 7 之前的代码 class Logger { public function log($msg) { echo $msg...手册-Closure::bindTo php手册-Closure::bind php手册-Closure 类 PHP闭包之bind和bindTo PHP 匿名函数使用技巧 欢迎各位大佬补充;

    87940

    PHP匿名函数与匿名类详解

    但是在PHP内,由于匿名函数是通过闭包类实现的( Anonymous functions are implemented using the Closure class),因此多数人混淆了闭包技术和匿名函数...* @param Closure $closure 必填 表示闭包函数 * @param object $newThis 必填 闭包中 $this 所指的对象 传入类名代表当前类,静态方法不能传值...($cl2, new Person()); //output:男 $bcl3 = Closure::bind($cl3, new Person()); PHP Copy 匿名类 PHP 7 开始支持匿名类...function log($msg) { echo $msg; } }); PHP Copy 可以传递参数到匿名类的构造器,也可以扩展(extend)其他类、实现接口...Copy 参考 php手册-Closure::bindTo php手册-Closure::bind php手册-Closure 类 PHP闭包之bind和bindTo PHP 匿名函数使用技巧

    27010

    【Python面试】 说说Python变量、函数、类的命名规则?

    废话不多说,开始今天的题目: 问:Python变量、函数、类的命名规则?...答:Python命名规范在编写代码中起到很重要的作用,虽然不遵循命名规范,程序可能也可以运行,但是使用命名规范可以更加直观地了解代码所代表的含义。...下面具体说说Python的命名规范: 1、类 单词首字母总是大写,私有类可以下划线开头。如MyClass。...class MyClass(): pass class MySchool(): pass 2、函数 函数名一律小写,若有多个单词用下划线隔开。另外,私有函数下划线开头 。...特定命名方式 主要是指 __xxx__ 形式的系统保留字命名法。项目中也可以使用这种命名,它的意义在于这种形式的变量是只读的,这种形式的类成员函数尽量不要重载。

    16.2K22

    PHP的命名空间

    命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题: 1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。 2....虽然任意合法的PHP代码都可以包含在命名空间中,但只有以下类型的代码受命名空间的影响, 它们是:类(包括抽象类和traits)、接口、函数和常量。...定义命名空间 命名空间通过关键字namespace来声明。...php namespace MyProject; //非限定名称 同一个命名空间 b(); //限定空间 继承当前的命名空间 Sub\Level\a(); //使用完全限定名称 独立的命名空间...a function (PHP 5.6+) use function My\Full\functionName as func; // importing a constant (PHP 5.6

    1.9K40

    PHP 命名空间介绍

    什么是命名空间 2. namespace 关键字声明命名空间 3. 命名空间名称的命名规则 1....什么是命名空间 ---- 主要作用:解决命名冲突问题 命名空间是指人为的将内存分隔, 让不同内存区域的同名结构共存。...文件夹对于文件夹内的文件来说就充当了命名空间的角色,两个文件名相同的文件不同放在同一个文件夹下,但是可以放在不同的文件夹下 2. namespace 关键字声明命名空间 ---- 1....命名空间第一次声明必须在所有代码之前 如果一个文件中包含命名空间, 必须在其他所有代码之前声明命名空间 但是 PHP7 严格模式(declare)除外, 严格模式声明可以放在声明命名空间之前 declare...命名空间名称的命名规则 ---- 系统关键字不能作为空间名称, 如: list、echo 等 以字母或下划线开头, 有字母、下划线、数字组成

    1.7K40

    php命名空间详解

    这个原理应用到程序设计领域就是命名空间的概念。 2、命名空间解决的问题 2.1、用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。...3、定义命名空间 3.1、虽然任意合法的PHP代码都可以包含在命名空间中,但只有三种类型的代码受命名空间的影响,它们是:类,函数和常量。 3.2、命名空间通过关键字namespace 来声明。...如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,则 foo 会被解析为foo。 警告:如果命名空间中的函数或常量未定义,则该非限定的函数名称或常量名称会被解析为全局函数名称或常量名称。...PHP 命名空间支持 有两种使用别名或导入方式:为类名称使用别名,或为命名空间名称使用别名。注意PHP不支持导入函数或常量。在PHP中,别名是通过操作符 use 来实现的. 例子如下: <?...6.4、名称解析规则如下: 6.4.1、对完全限定名称的函数,类和常量的调用在编译时解析。例如 new \A\B 解析为类 A\B。

    2.5K80

    PHP命名空间学习笔记

    在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题: 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。...为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。 PHP 命名空间提供了一种将相关的类、函数和常量组合到一起的途径。...{} in的错误,对于全局代码,那就放在全局的命名空间中,类似这样namespace { } 使用命名空间 PHP 命名空间中的元素可以通过三种方式引用,以类名为例: 非限定名称,或不包含前缀的类名称...使用命名空间 所有支持命名空间的PHP版本支持三种别名或导入方式:为类名称使用别名、为接口使用别名或为命名空间名称使用别名。PHP 5.6开始允许导入函数或常量或者为它们设置别名。...为了简化操作,PHP还支持在一行中使用多个use语句。 如果没有定义任何命名空间,所有的类与函数的定义都是在全局空间,与 PHP 引入命名空间概念前一样。

    1.6K20

    RTOS函数命名规则

    例如: printEmployeePaychecks(); 函数名中每一个逻辑断点都有一个大写字母来标记。 帕斯卡(Pascal)命名法:与驼峰命名法类似。...只不过驼峰命名法是第一个单词首字母小写,而帕斯卡命名法则是第一个单词首字母大写。因此这种命名法也有人称之为“大驼峰命名法”。...事实上,很多程序设计者在实际命名时会将驼峰命名法和帕斯卡结合使用,例如变量名采用驼峰命名法,而函数采用帕斯卡命名法。...所以类似uc,us类的变量就是unsigned char,unsigned short,分别对应uint8_t,uint16_t。 x :为用户自定义的数据类型,比如结构体,队列等。...prv :static函数 v: void函数 函数名 函数名包含了函数返回值的类型、函数所在的文件名和函数的功能,如果是私有的函 数则会加一个 prv(private)的前缀。

    1.9K20

    我的php命名规范

    1.变量 所有字母都使用小写,使用'_'作为每个词的分界,如$user_name 2.函数 函数的命名使用小写字母和下划线的方式,如get_client_ip 3.方法 方法的命名使用驼峰法,并且首字母小写或者使用下划线...“_”,例如 getUserInfo,_formatAge,通常下划线开头的方法属于私有方法; 以双下划线“__”打头的函数或方法作为魔法方法,例如 __call 和 __autoload; 4.类名...类名使用驼峰法命名,并且首字母大写,另外类名和文件名保持一致 5.常量 常量以大写字母和下划线命名,例如 HAS_ONE和 MANY_TO_MANY; 配置参数以大写字母和下划线命名,例如HTML_CACHE_ON...6.属性名 属性的命名使用驼峰法,并且首字母小写或者使用下划线“_”,例如 tableUser、_instance,通常下划线开头的属性属于私有属性;

    85880
    领券