3

を介して登録されたクラスをカスケード拡張しようとしていclass_aliasます。「クラスを再宣言できません」という警告が表示され、自分がやりたいことがPHPでも可能かどうか疑問に思っています。

私の目的は、継承の「チェーン」を作成できるようにすることです。One\oneは基本クラスであり、これを拡張しますが、エイリアスされるクラスとしてTwo\oneも置き換えられます。One\one

このようにして、チェーン内の他のクラス/他のクラスがすでに拡張しているクラスについての知識がなくても、任意の数のクラスが特定の名前空間のメインクラスを拡張できます。

one.php

namespace One;

class_alias('One\one', 'one');

class one {}

two.php

namesapce Two;

class_alias('Two\one', 'one');

class one extends \one{}

index.php

<?php
require('one.php');
require('two.php');

$instance = new \one();
var_dump($instance);
4

1 に答える 1

1

同じ名前空間に同じ名前の2つのクラスを含めることはできません。one呼び出しを介して、グローバル名前空間で名前を2回割り当てようとしていclass_aliasます。

名前空間を使用していて、それらをバイパスしようとしています。それをする必要は何ですか?

于 2012-11-09T20:32:26.987 に答える