2

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() 関数はそのクラスで定義されています...クラス内に保持している限り、date()、time()、ob_start などの既存の PHP 関数で関数に名前を付けることができます()?

4

3 に答える 3

2

はい、同じ名前の事前定義された関数と競合しないため、クラスに 、 などdateの名前の関数を使用しても問題はありません。time

さらに、異なる名前空間(C# の名前空間や Java のパッケージなど) に同じ名前のクラスを含めることができます。

また、名前空間を使用して、その名前で関数を定義することもできます。例えば:

namespace myNamespace;


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

注:名前空間を使用して「デフォルト」名前空間で定義された関数とクラスにアクセスする場合\、それらの関数とクラスの前に追加する必要があります (例: \stdClass\time()\strpos()など)。

于 2012-12-11T06:34:49.443 に答える
1

メモリ内での実際の名前は のようになるため、クラス内で実行できますIDateTimeProvider::date。これをラッピングと呼びます。

それらをクラスから取り出したい場合は、次のような名前空間を使用する必要があります。

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

そして別のファイルでそれを使用します\MyNamespace\time();

指定された関数では、それはまったく役に立ちません。DateTime は PHP に存在し、timestamp とそのエコシステムよりもはるかに強力であることを思い出してください。

于 2012-12-11T06:34:56.963 に答える
0

はい、できます!

コードを実行しようとしましたか?

ここにコードのコードパッドの例があり、正常に動作しています

于 2012-12-11T06:35:51.203 に答える