В официальной документации PHP я нашел где-то такие объявления:
public int save ( string $filename [, int $options ] )
а вот так:
public mixed load ( string $filename [, int $options = 0 ] )
$options
аргумент?Второй, я уверен, что имеет $options
аргумент установлен в 0 (когда я не указываю это).
Но первый? Разве это не говорит о том, что метод имеет 2 обязательных аргумента? (так для чего нужны квадратные скобки?).
Я пытаюсь переопределить это:
public bool schemaValidate ( string $filename [, int $flags ] )
(отпечаток пальца вставлен из schemaValidate () PHP документация)
но если я объявлю второй аргумент $flags
тогда я получаю
SchemaValidate () должна быть совместима с DOMDocument :: schemaValidate ($ filename)
Если я уберу декларацию $flags
все работает (как если бы я был в < PHP 5.5.2)
Пока я бегу PHP 5.5.9 а также $flags
был введен в schemaValidate()
конструктор из PHP 5.5.2, почему я получаю несовместимую проблему?
Я не понимаю если документация PHP заслуживает доверия или если я должен проверить в другом месте для правильной функции отпечатка пальца, когда я хочу переопределить нативные методы.
Я пытался взглянуть на исходный код, но функция является просто псевдонимом С функция.
public int save ( string $filename [, int $options ] )
означает, что $options
является необязательный, если не пройти $options
его значение по умолчанию ноль
public mixed load ( string $filename [, int $options = 0 ] )
означает, что $options
является необязательный, если не пройти $options
его значение по умолчанию 0
Чтобы получить первую документацию, они должны создать функцию и переопределить их самостоятельно, как показано ниже:
public int save ( string $filename ){
//do some stuff...
}
//later in code...
public int save ( string $filename, int $options ){
//do some stuff...
}
Во втором они просто сделали что-то вроде:
public mixed load ( string $filename, int $options = 0 ){
//do some stuff...
}
Других решений пока нет …