本文目录一览:
- 1、php 命名空间函数和类中不能使用use吗
- 2、php命名空间 use使用的问题:
- 3、php匿名函数中的use有什么用
- 4、PHP 5.3 特性:命名空间
- 5、PHP 的use 命名空间 是什么意思
- 6、php子类怎么使用父类的use
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: 命名空间