Вопрос по синтаксису PHP

1 234
UL
На сайте с 04.08.2013
Offline
68
#21

У кого-нибудь есть практический опыт применения методов-перехватчиков? Не могу вообразить ситуацию в которой без них не обойтись, к примеру без __cal(). При этом они возвращают значение, которое хотел присвоить клиентский код не существующему свойству/методу. Чем это может быть полезно? Если все равно такого свойства/метода не существует, то значение можно просто похерить со спокойной душой и все! Или я могу воспользоваться это шляпой как конструктором и проинициализировать свойство, присвоить ему значение и дальше использовать его в программе? - хотя это геморно как-то.

UL
На сайте с 04.08.2013
Offline
68
#22

[, $v1, $v2] = $v3; - подскажите пжл что это? Это список? Первый аргумент или значение (не знаю что это) пропущен почему-то. Давно хотел узнать, даже не знаю как это называется.

S
На сайте с 30.09.2016
Offline
469
#23
use_linux:
Первый аргумент или значение (не знаю что это) пропущен почему-то.

Да, это list(). Первый аргумент пропущен, чтобы сохранить соответствие переменных элементам массива.

use_linux:
Давно хотел узнать
Ну вот врёшь ведь. PHP понимает эту конструкцию только начиная с версии 7.1,
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
S
На сайте с 13.10.2014
Offline
171
#24
use_linux:
[, $v1, $v2] = $v3;

это назначение переменной $v1 значения $v3[1], а $v2 значения $v3[2],

то-есть полный синоним

$v1 = $v3[1];

$v2 = $v3[2];

UL
На сайте с 04.08.2013
Offline
68
#25
Sitealert:
Ну вот врёшь ведь. PHP понимает эту конструкцию только начиная с версии 7.1,

Спс за ответ! Вру! Но не нарочно, т.к. начинал изучать PHP, когда в ходу было 4-я, а заканчиваю 7-й. В голове уже все смешалось давно)

---------- Добавлено 19.04.2019 в 06:36 ----------

Так что получается, в переменной справа сохраняется список, или значение переменной входит в него?

S
На сайте с 13.10.2014
Offline
171
#26

use_linux, в переменной справа хранится массив

danforth
На сайте с 18.12.2015
Offline
153
#27
Junior Web Developer
UL
На сайте с 04.08.2013
Offline
68
#28

silicoid, а разве присваивание значений не справа налево?

UL
На сайте с 04.08.2013
Offline
68
#29

<?php

class dbr {

private $db;

public function init () {

try {
$this->db = new PDO('mysql:host=localhost;dbname=magic', "root", "");
}

catch (PDOException $e)
{
die('<h3 style="color: blue">Ошибка соединения с БД. Повторите попытку через полминуты</h3>');
}
}

public function query($sql) {

return $this->db->query($sql);

}

public function getobj($sql) {

return $this->db->fetch(PDO:: FETCH_OBJ);

}
function __destruct() {

$this->db = null;
}
}

$a = new dbr;
$a->init();
$a->getobj('SELECT * FROM articles ORDER BY date DESC');
?>

Подскажите в чем ошибка? пхп выдает ошибку на 27 строке "вызов неопределенного метода PDO::fetch()". Единственное непонятно: до этого подключался через pdo 100+ раз без проблем, а на этот раз решил вые@нуться и написал класс, в котором все то же, что и обычно, только не рабочий оказался(

ДП
На сайте с 23.11.2009
Offline
203
#30

Как минимум метод query() не вызвали - запрос-то у вас в базу не ушёл, судя по коду.

1 234

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий