PHP "Объект" класс - PullRequest
0 голосов
/ 18 апреля 2011

Я хотел бы создать класс с именем "Object", чтобы иметь возможность реализовывать "toString ()", "equal ()" ... Проблема в том, что ключевое слово "object" уже занято, и мне интересно, чтобыло бы лучшей реализацией.

Первый вариант, который приходит мне в голову, - это использование пространств имен, поэтому у меня нет параллелизма между классом php "object" и моим.Проблема в том, что если я захочу использовать два класса «Объект», мне потребуется позже переименовать один из них в моем коде.

namespace System
{
    class Object
    {

    }
}

...

use System\Object as Object1;
use object as Object2;

Другим вариантом было бы назвать его по-другому.Если вы думаете, что это лучший вариант, как бы вы назвали его?

class ObjectD
{

}

У вас есть варианты получше?

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

Вы можете использовать синоним , например Entity или Item.

Да, и, кстати, класс основного / базового / корневого объекта называется stdClass.

Редактировать: Я думаю, что абсолютно невозможно использовать «объект» где-либо сам по себе.

Примите во внимание следующее:

$test = new object();
$test = (object) array();

Запуск приведенного выше кода, как бы PHP узнал, что есть что?

Редактировать 2 : Кроме того, если я вас правильно понимаю, вы хотите создать свою собственную иерархию объектов. В таком случае вы должны назвать объект в соответствии с тем, что вы делаете. Например, в Joomla есть JObject.

Если бы мне пришлось поделиться своим опытом, у вас всегда должен быть действительный префикс для ваших глобальных имен. Я понял это только недавно с моим маленьким любимым проектом.

Редактировать 3: Только что попробовал:

use System\Object as Object1;
use object as Object2;

class object {
    public $test='aaa';
}

$a=new object();

$b=(object)array('aaa'=>'test');

echo '<pre>';
print_r($a);
print_r($b);

Отпечатано:

object Object
(
    [test] => aaa
)
stdClass Object
(
    [aaa] => test
)

Редактировать 4: Интересно, что это работает даже без пространства имен.

1 голос
/ 18 апреля 2011

Использование зарезервированных слов всегда может создать проблему.Особенно, если позже какой-нибудь другой программист будет работать над вашим проектом, вы можете поместить программиста в бессонные ночи.

Я бы пошел с;

class ObjectD
{

}

Это может быть не совсем то, что вы хотитетак как вы хотите использовать имя объект , но, по крайней мере, вы будете писать меньше кодов, что хорошо.

Я также хотел бы добавить, если вы будете использовать его вбольшой проект, будьте уверены, что вы потратите много времени на отладку и в конечном итоге захотите изменить свой код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...