我可以使用系统函数名称(在类中)定义自己的函数吗?

时间:2012-12-11 06:28:56

标签: php

PHP对此代码没有任何问题:

    interface IDateTimeProvider
    {
        public function date($format);
        public function time();
    }

    class DateTimeProvider implements IDateTimeProvider
    {
        public function date($format)
        {
            return date($format);
        }
        public function time()
        {
            return time();
        }
    }

在该类中定义了date()和time()函数...所以只要我将它保存在一个类中,我可以使用预先存在的PHP函数命名我的函数,如date(),time( )或ob_start()?

3 个答案:

答案 0 :(得分:2)

是的,在类中使用名称为datetime等的函数没有任何问题,因为它们与那些具有相同名称的预定义函数不冲突。

您可以在不同的namespaces中使用相同名称的类(如C#中的命名空间或Java中的包等)。

您还可以使用命名空间来定义具有该名称的函数。例如:

namespace myNamespace;


function time() //function defined in 'myNamespace'
{
    return \time(); // native function time();
}

注意:在使用命名空间访问“default”命名空间中定义的函数和类时,您需要在这些函数和类之前添加\(例如\stdClass\time()\strpos()等。)

答案 1 :(得分:1)

你可以在课堂上做,因为他们的真实姓名在内存中会像IDateTimeProvider::date。这称为包装

如果你想让它们脱离类,你必须使用这样的命名空间:

namespace MyNamespace;
function time(){
    return \time();
 }

在另一个文件中,您将使用\MyNamespace\time();

对于给定的函数,它是无用的,我会记住你,DateTime存在于PHP中,并且比时间戳和他的生态系统更强大。

答案 2 :(得分:0)

,你可以!

您是否尝试过运行代码?

here是您的代码的键盘示例,它工作正常