php4 многоуровневое наследование - PullRequest
0 голосов
/ 14 марта 2011

Работает ли этот тип наследования для php4?

class A {
    var $string;

    function A () {
        $this->string = "Hello";
    }
}

class B extends A {

    function B () {
        $this->string = "World";
    }
}

class C extends B {

    function C () {
        $this->string = "FooBar";
    }
}

$a = new A();
$b = new B();
$c = new C();
                    // OUTPUT:
echo $a->string;    //   "Hello"
echo $b->string;    //   "World"
echo $c->string;    //   "FooBar"

Ответы [ 2 ]

1 голос
/ 14 марта 2011

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

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

, например:

/application/classes/database/core.php
/application/classes/database/util.php
/application/classes/database/misc.php
/compat/application/classes/database/core.php
/compat/application/classes/database/util.php
/compat/application/classes/database/misc.php

, тогда вы можете сделать:

function loadClass($path)
{
    if (version_compare(PHP_VERSION, '5.0.0', '<'))
    {
         $path = "/compat/" . $path;
    }

    require_once $path;
}

loadClass("/application/classes/database/core.php");

, а затем со временеми никто не использует PHP 4, вы можете просто удалить каталог compat и убрать проверку из loadClass.

. В качестве альтернативы можно зарегистрировать автозагрузчик. Таким образом, вы можете программировать с помощью require_once в вашем приложении и уменьшитьвам нужна дополнительная функция, которая будет доступна в вашем приложении.

и ответьте на ваши вопросы, в частности, о классе hte, указанном выше, это идеально кросс-совместимо.

Если вы продолжаете создавать приложение дляPHP4 конкретно вы должны принять во внимание:

  • Неиспользуйте модификаторы public / private для ваших методов класса.
  • Всегда используйте имя класса в качестве конструктора вместо __construct.
  • При передаче класса в функцию, вы всегда должны передавать по ссылкеиспользуя символ &.
  • Не используйте магические методы, такие как __tostring или __destruct.

. Вы всегда должны создавать свое приложение в системе PHP4, а затемтест на последнюю версию PHP5.(изменить соответственно)

1 голос
/ 14 марта 2011

Глядя на заметки со справочных страниц PHP, нет никаких упоминаний о том, не поддерживается ли многоуровневое наследование в php4.Следовательно, он должен работать с версией 4.

Возможно, кто-то, имеющий интерпретатор PHP 4, может это гарантировать.

...