php5和命名空间?
问题描述:
我在PHP中工作很多,但我从来没有真正理解PHP中的名称空间方法。有人可以帮我吗?我在php.net的网站上看过它没有解释得很好,我找不到它的例子。php5和命名空间?
我需要知道如何在示例版本中创建代码。
- 名称空间:样品
- 类:sample_class_1
- 功能:test_func_1
- 类:sample_class_2
- 功能:test_func_2
- 功能:test_func_3
- 类:sample_class_1
答
喜欢这个?
<?php
namespace sample
{
class Sample_class_1
{
public function test_func_1($text)
{
echo $text;
}
}
class Sample_class_2
{
public static function test_func_2()
{
$c = new Sample_class_1();
$c->test_func_1("func 2<br />");
}
public static function test_func_3()
{
$c = new Sample_class_1();
$c->test_func_1("func 3<br />");
}
}
}
// Now entering the root namespace...
// (You only need to do this if you've already used a different
// namespace in the same file)
namespace
{
// Directly addressing a class
$c = new sample\Sample_class_1();
$c->test_func_1("Hello world<br />");
// Directly addressing a class's static methods
sample\Sample_class_2::test_func_2();
// Importing a class into the current namespace
use sample\Sample_class_2;
sample\Sample_class_2::test_func_3();
}
// Now entering yet another namespace
namespace sample2
{
// Directly addressing a class
$c = new sample\Sample_class_1();
$c->test_func_1("Hello world<br />");
// Directly addressing a class's static methods
sample\Sample_class_2::test_func_2();
// Importing a class into the current namespace
use sample\Sample_class_2;
sample\Sample_class_2::test_func_3();
}
如果您在另一个文件是你不需要调用namespace {
进入根命名空间。所以,想象下面的代码是另一个文件“ns2.php”,而原来的代码是“ns1.php”:
// Include the other file
include("ns1.php");
// No "namespace" directive was used, so we're in the root namespace.
// Directly addressing a class
$c = new sample\Sample_class_1();
$c->test_func_1("Hello world<br />");
// Directly addressing a class's static methods
sample\Sample_class_2::test_func_2();
// Importing a class into the current namespace
use sample\Sample_class_2;
sample\Sample_class_2::test_func_3();
冈井,所以我需要使用的项目命名空间中的我之前使用“命名空间”? – ParisNakitaKejser 2010-10-12 16:48:52
我问becures我想要命名空间调用indsite我现在有一个类,当我需要使用这个命名空间像一个fremawork,:) – ParisNakitaKejser 2010-10-12 16:54:17
它的工作方式是,每个类(和函数,和变量)住命名空间内。如果您不使用“namespace”关键字,则假定您位于根名称空间中。如果你想使用来自不同命名空间的项目(例如,当你处于“sample_2”或根目录时,来自“sample”的类),则必须使用其全名(例如'sample \ Sample_class_1' )或将它导入到你当前的命名空间(使用'use'sample \ Sample_class_1';') – 2010-10-12 17:32:02