×

php中命名空间use

php中命名空间use(php命名规范)

admin admin 发表于2023-04-07 01:29:09 浏览71 评论0

抢沙发发表评论

本文目录一览:

php 命名空间函数和类中不能使用use吗

public 表示全局,类内部外部子类都可以访问;

private表示私有的,只有本类内部可以使用;

protected表示受保护的,只有本类或子类或父类中可以访问;

当实例化对象时,在外部只能使用其公共方法。不能使用protected和private方法。

而protected方法当子类继承时,可以调用父类的protected方法。或者在本类中使用,

php命名空间 use使用的问题:

命名空间是运行时解析的。use就相当于一种声明,并不解析和加载。在使用时就可以自动加载进来,那么这里你就可以理解为把db这个类库导入进来了,所以可以正常使用。

php匿名函数中的use有什么用

php文档中关于use的说明

所有支持命名空间的PHP版本支持三种别名或导入方式:为类名称使用别名、为接口使用别名或为命名空间名称使用别名。PHP 5.6开始允许导入函数或常量或者为它们设置别名。

在PHP中,别名是通过操作符 use 来实现的.  下面是一个使用所有可能的五种导入方式的例子:

Example #1 使用use操作符导入/使用别名

?php

namespace foo;

use My\Full\Classname as Another;

// 下面的例子与 use My\Full\NSname as NSname 相同

use My\Full\NSname;

// 导入一个全局类

use ArrayObject;

// importing a function (PHP 5.6+)

use function My\Full\functionName;

// aliasing a function (PHP 5.6+)

use function My\Full\functionName as func;

// importing a constant (PHP 5.6+)

use const My\Full\CONSTANT;

$obj = new namespace\Another; // 实例化 foo\Another 对象

$obj = new Another; // 实例化 My\Full\Classname 对象

NSname\subns\func(); // 调用函数 My\Full\NSname\subns\func

$a = new ArrayObject(array(1)); // 实例化 ArrayObject 对象

// 如果不使用 "use \ArrayObject" ,则实例化一个 foo\ArrayObject 对象

func(); // calls function My\Full\functionName

echo CONSTANT; // echoes the value of My\Full\CONSTANT

?

PHP 5.3 特性:命名空间

PHP 的一个新的重要特性就是 命名空间(namespace) 这一特性在 PHP x 时候就提出过 后来被取消并安排在 PHP 中实现 而此次又再次 提前 到了 PHP 发布 可见开发人员对其的重视以及谨慎的态度 -php中命名空间use

官方发布时说明文档的内容可能已过期(documentation maybe out dated) 所以在这里简单的说明命名空间的用法 首先是声明一个命名空间 加入了新的关键字 namespace 其应在类文件的开头-php中命名空间use

?php namespace Project::Module; class User { const STATUS_OK = true; function register($data) { } } ? -php中命名空间use

然后在控制器中(可能是其他文件)就可以这样调用

$user = new Project::Module::User(); $user register($register_info);

的确与平常的并无两样 但是我们可以将两个相互独立的类联系起来 比如

Project::Module::User; Project::Module::Blog;

这样就能从语言本身更容易描述和理解变量 类之间的关系 从而避免了 传统 上的 Project_Module_Blog 这样冗长的命名方式 上面的说明可能很难说明使用命名空间带来了什么好处 新增加的 use 和 as 关键字或许能更好的说明问题 use 和 as 语句可以引用和声明 命名空间的 别名 比如 上述的控制器中实例化类的代码可以这样写-php中命名空间use

use Project::Module; $user = new Module::User(); $user register($register_info);

甚至

use Project::Module::User as ModuleUser; $user = new ModuleUser; $user register($register_info);

类中的常量也可以通过命名空间访问 比如上述类中的 STATUS_OK 就可以通过命名空间

Project::Module::User::STATUS_OK

访问 进一步的 也可以用别名简化那么长的 变量名称

use Project::Module::User::STATUS_OK as STATUS_OK; echo STATUS_OK;

顺便提下 超空间(The Global Namespace) 的概念 所谓的 超空间 就是没有指定命名空间的变量 类和函数 比如

function foo() { }

这的函数 可以使用 foo() 执行的同时 也可以使用 ::foo(); 这样执行

最后 配合使用 autoload 函数即可载入指定命名空间的类 简单的函数如下

function __autoload( $classname ) { $classname = strtolower( $classname ); $classname = str_replace( :: DIRECTORY_SEPARATOR $classname ); require_once( dirname( __FILE__ ) / $classname class php ); } -php中命名空间use

这样 比如调用

__autoload( Project::Module::User );

lishixinzhi/Article/program/PHP/201311/21303

PHP 的use 命名空间 是什么意思

有点类似于 java 中的包机制,用来解决重名问题的,每一个命名空间都是独立的

给你举个例子吧,比如我现在想写两个类,名字都叫 Action

?php

namespace A;    // 定义命名空间

class Action {

    //..

}

namespace B;    // 定义第二个命名空间

class Action {

    //..

}

use 关键字用于导入某个命名空间下的类, 如果我在B空间内想使用A空间中的Action类,就需要导入这个类才能使用(当然也可以指明空间前缀来使用)

namespace B;

// 在本空间中需要使用A空间中的Action类,使用use导入

use A\Action;    // 导入,如果本空间中也有一个Action会出现错误,因为类重名了

use A\Action as A_Action;   // 通过取别名的方式解决

$var = new A_Action;

php子类怎么使用父类的use

你指的是导入命名空间的语法 use?

那不存在父类子类的说法。use只是将另外一个命名空间的定义(类或函数等)导入到当前命名空间使用。

每个文件(如果一个文件有多个命名空间,那每个命名空间导入一次)使用该语法导入一次,就可以一正常使用了。

如果一个文件里同时定义了两个类,同时只有一个命名空间,那在命名空间后导入一次就可以在两个类里同时使用了

PHP: 命名空间