Dez
Новичок
Здравствуйте.
Кое какие вопросы хотелось бы уточнить (php 5.3.26):
1) В доках про свойства сказано что для строк heredoc нельзя, но следующее работает:
2)
В доках про конструкторы сказано:
, нормально отнаследованный конструктор отработает. Результат будет:
В коде:
Выведет:
2.1) В чем практическое применение вызова НеСтатического метода внутри объекта через :: ? В Зандстре читал что так можно делать только для parent.
Через self или ИмяКласса я смотрю можно зацепиться за метод, который не переопределится в потомках. Это для чего то надо?
Или что?
2.2) По идее если метод класса никак не привязан к текущему объекту (как следствие $this внутри никак не используется), то обязательно его объявлять статическим?
Кое какие вопросы хотелось бы уточнить (php 5.3.26):
1) В доках про свойства сказано что для строк heredoc нельзя, но следующее работает:
PHP:
class S1 {
public $str =<<<EOT
b\n\nar
EOT;
}
$s = new S1;
print nl2br($s->str);
В доках про конструкторы сказано:
, но в следующем коде:Если в классе-потомке не определен конструктор, то он может наследоваться от родительского класса как обычный метод (если он не определен как приватный).
PHP:
class C1 {
public $x = '';
private function __construct($x = 1){
$this->x = $x;
}
public static function create($x = 1){
return new static($x);
}
}
class C2 extends C1 {
}
var_dump(C2::create(777));
3)object(C2)[2]
public 'x' => int 777
В коде:
PHP:
class D {
public $d = 5;
public function add_d(){
$this->d++;
}
public function do_something(){
// это:
$this->add_d();
// отработает как и это:
//self::add_d();
// и как это:
//D::add_d();
// и даже как это:
//static::add_d();
}
}
$d = new D;
$d->do_something();
var_dump($d);
Вопросы:object(D)[2]
public 'd' => int 6
2.1) В чем практическое применение вызова НеСтатического метода внутри объекта через :: ? В Зандстре читал что так можно делать только для parent.
Через self или ИмяКласса я смотрю можно зацепиться за метод, который не переопределится в потомках. Это для чего то надо?
Или что?
2.2) По идее если метод класса никак не привязан к текущему объекту (как следствие $this внутри никак не используется), то обязательно его объявлять статическим?