Php 个具有函数的名称空间
Php namespaces with functions
我有一个目录 include
。在这个目录中,我只有一个目录:HQF
。在这个目录中,我有很多文件,我总是在其中声明它们属于 HQF
命名空间,如下所示:
<?php
namespace HQF;
class MyClass
{
}
文件名为“MyClass.php
”。我试图坚持 "a bit" 到 PSR0。
一切正常,我将我的自动加载器制作成这样:
function __autoload($className)
{
$className = ltrim($className, '\');
$fileName = '';
$namespace = '';
if ($lastNsPos = strripos($className, '\')) {
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = str_replace('\', DS, $namespace).DS;
}
$fileName .= str_replace('_', DS, $className).'.php';
$fileName = 'include/'.$fileName;
require $fileName;
}
因此,当我需要一个 class 时,我只需要做:$m = new \HQF\MyClass();
它就像一个魅力,自动包含文件“include/HQF/MyClass.php
”
我的 "pure" 函数有问题。
我创建了一个名为“include/HQF/mb_utils.php
”的文件,我想在其中放置我的 mb_xxx
函数。注意:没有 classes,只有功能。
我尝试了以下所有操作但均未成功:
$test=\HQF\mb_ucname('calling HQF/mb_ucname...')
;
$test=\mb_ucname('calling HQF/mb_ucname...')
;
use \HQF\mb_utils
;然后是上面的两个测试;
它们都不起作用。我错过了什么?
我依赖于 Mark Baker 的评论。
所以这是我的解决方法:我创建了一个名为 Mb.php
的文件,其中有一个名为“Mb
”(代表 'multibytes')的 class,我像这样放置我所有的多字节函数:
<?php
namespace HQF;
class Mb
{
static public function ucfirst(&$string, $e ='utf-8')
{
/* blabla */
}
static public function ucname($string, $e ='utf-8')
{
/* blabla */
}
}
然后我这样称呼他们:
$mystring_to_change = \HQF\Mb::ucname($original_name);
这是我找到的唯一方法,我不知道它是否是最好的...欢迎任何建议。
我有一个目录 include
。在这个目录中,我只有一个目录:HQF
。在这个目录中,我有很多文件,我总是在其中声明它们属于 HQF
命名空间,如下所示:
<?php
namespace HQF;
class MyClass
{
}
文件名为“MyClass.php
”。我试图坚持 "a bit" 到 PSR0。
一切正常,我将我的自动加载器制作成这样:
function __autoload($className)
{
$className = ltrim($className, '\');
$fileName = '';
$namespace = '';
if ($lastNsPos = strripos($className, '\')) {
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = str_replace('\', DS, $namespace).DS;
}
$fileName .= str_replace('_', DS, $className).'.php';
$fileName = 'include/'.$fileName;
require $fileName;
}
因此,当我需要一个 class 时,我只需要做:$m = new \HQF\MyClass();
它就像一个魅力,自动包含文件“include/HQF/MyClass.php
”
我的 "pure" 函数有问题。
我创建了一个名为“include/HQF/mb_utils.php
”的文件,我想在其中放置我的 mb_xxx
函数。注意:没有 classes,只有功能。
我尝试了以下所有操作但均未成功:
$test=\HQF\mb_ucname('calling HQF/mb_ucname...')
;$test=\mb_ucname('calling HQF/mb_ucname...')
;use \HQF\mb_utils
;然后是上面的两个测试;
它们都不起作用。我错过了什么?
我依赖于 Mark Baker 的评论。
所以这是我的解决方法:我创建了一个名为 Mb.php
的文件,其中有一个名为“Mb
”(代表 'multibytes')的 class,我像这样放置我所有的多字节函数:
<?php
namespace HQF;
class Mb
{
static public function ucfirst(&$string, $e ='utf-8')
{
/* blabla */
}
static public function ucname($string, $e ='utf-8')
{
/* blabla */
}
}
然后我这样称呼他们:
$mystring_to_change = \HQF\Mb::ucname($original_name);
这是我找到的唯一方法,我不知道它是否是最好的...欢迎任何建议。