Jak*_*raw 24
命名空间是一种用于组织变量,函数和类的编程语言机制.PHP 5.3增加了对命名空间的支持,我将在下面的示例中演示:
假设您想要组合两个使用相同类名User的项目,但每个项目的实现不同:
// Code for Project One (proj1.php)
<?php
class User {
protected $userId;
public function getUserId() {
return $this->userId;
}
}
$user = new User;
echo $user->getUserId();
?>
// Code for Project Two (proj2.php)
<?php
class User {
public $user_id;
}
$user = new User;
echo $user->user_id;
?>
<?php
// Combine the two projects
require 'proj1.php';
require 'proj2.php'; // Naming collision!
$myUser = new User; // Which class to use?
?>
Run Code Online (Sandbox Code Playgroud)
对于PHP小于5.3的版本,你就必须要经过的类的所有实例改变类名的麻烦用户通过防止命名冲突的一个项目中使用:
<?php
class ProjectOne_User {
// ...
}
$user = new ProjectOne_User; // Code in Project One has to be changed too
?>
Run Code Online (Sandbox Code Playgroud)
对于大于或等于5.3的PHP版本,可以在创建项目时使用名称空间,方法是添加名称空间声明:
<?php
// Code for Project One (proj1.php)
namespace ProjectOne;
class User {
// ...
}
$user = new User;
?>
<?php
// Combine the two projects
require 'proj1.php';
use ProjectOne as One; // Declare namespace to use
require 'proj2.php' // No collision!
$user = new \One\User; // State which version of User class to use (using fully qualified namespace)
echo $user->user_id; // Use ProjectOne implementation
?>
Run Code Online (Sandbox Code Playgroud)
欲获得更多信息:
| 归档时间: |
|
| 查看次数: |
1108 次 |
| 最近记录: |