好的是这个场景:
以下是两个示例类。
我经常使用一些功能。
因此,我需要它们尽可能地缩短可读性和写入速度。如果我可以将它们粘贴在命名空间中并以某种方式扩展它,它还可以防止其他库中可能的冲突。
基础课程
namespace Core;
class Base{
......
}
function set($array, $path=null, $value=null){
.....
}
function get($array, $path=null){
.....
}
第二课
namespace Core\Config;
class Config{
public function __construct($array){
$conf = get($array, 'key1.key2.key3');
.... do something with returned value ....
}
}
答案 0 :(得分:1)
我看不出如何在课堂内使用functions
,即使它们在没有$this->
或$object->
的同一个课程中也是如此。我可以非常粗略地提供的解决方案是实例化Base类,如果你无法扩展它(一个名为Base的类似乎应该扩展,但无论如何):
namespace Core\Config;
class Config{
private $_base;
public function __construct($array){
$this->_base = new Core\Base();
$conf = $this->_base->get($array, 'key1.key2.key3');
或者,包装它们:
class Config {
public function get($array, $path=null) {
$base = new Core\Base();
return $base->get($array, $path);
}
public function __construct($array) {
$conf = $this->get($array, 'key1.key2.key3');
}
好的,现在我看,它们是文件中的函数,包含类。
namespace Core\Config;
use Core;
class Config {
public function __construct($array) {
$conf = Core\get($array, 'key1.key2.key3');
}
或者为了减少工作量,您可以为gore as C
添加别名
答案 1 :(得分:1)
有人已经说明了但不是以正确的方式:
<?php
namespace Base {
function get() {...}
}
namespace Base\Config {
use \Base as B;
class Config {
public function __construct(...) {
$something = B\get(...);
}
}
}
您可以导入Base
命名空间并对其进行别名并使用它
但是,您无法导入函数或常量(仅限类和接口)
参考:PHP.net
另请注意,您不能在类名之外的类中定义函数 你正在做的是在一个文件中定义一个类和几个“独立”函数,但它们在某种程度上没有关联(但它们在同一个命名空间中)。