Итак, все это чудо с самого начала моего перехода на PDO с mysql_* не работало.
Что выводится в index.php:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/u335361938/public_html/index.php:1) in /home/u335361938/public_html/sys tem/include.php on line 2
Fatal error: Using $this when not in object context in /home/u335361938/public_html/sys tem/classes/MyPDO.class.php on line 133
DlTA
Отправлено: 19 Марта, 2014 - 17:02:51
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
ну а чего тут удивительного?!
смотрим в файл "Класс Security:"
строка 17
и что видим?
parent::select("users", "l
а это пример статического вызова метода, внутри которого юзается $this что ну не как нельзя!
тоесть нужно
1) изметь форму вызова метода,
либо
2) не юзать $this, в методе select(...)
но второй вариант внешне сложнее, так как за собой требует изменения в куче кода
XuPoH
Отправлено: 19 Марта, 2014 - 17:24:56
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Март 2014
Помог: 0 раз(а)
DlTA пишет:
ну а чего тут удивительного?!
смотрим в файл "Класс Security:"
строка 17
и что видим?
parent::select("users", "l
а это пример статического вызова метода, внутри которого юзается $this что ну не как нельзя!
тоесть нужно
1) изметь форму вызова метода,
либо
2) не юзать $this, в методе select(...)
но второй вариант внешне сложнее, так как за собой требует изменения в куче кода
как сделать 1ое?)
DlTA
Отправлено: 19 Марта, 2014 - 17:50:38
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
XuPoH пишет:
как сделать 1ое?)
вообще нужно разбираться в коде, почему именно нужно вызывать родительский метод, а не тот что наследуется, внешне я не видел чтоб этот метод переопределялся, ну а там фиг его знает
метод в лоб:
заменить
в 17 строке
$check = parent::select("users", "login=:login", array(":login"=>$login));
на
$check = $this->select("users", "login=:login", array(":login"=>$login));
Hapson
Отправлено: 19 Марта, 2014 - 18:47:18
Посетитель
Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013 Откуда: Ставропольский край
Помог: 10 раз(а)
[+]
DlTA пишет:
и что видим?
parent::select("users", "l
а это пример статического вызова метода, внутри которого юзается $this что ну не как нельзя!
Да ладно!!!
PS тогда вопрос:
1) как вызвать родительский метод
2) почему в нем нельзя использовать $this
3) да и вообще... что будет в $this родительского метода, если вызвать его из дочернего класса???
----- ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
esterio
Отправлено: 19 Марта, 2014 - 18:55:28
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
XuPoH пишет:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/u335361938/public_html/index.php:1) in /home/u335361938/public_html/sys tem/include.php on line 2
Вы так каждый раз при создании нового екземпляра класа планируете делать коннект к базе?
Hapson
Отправлено: 19 Марта, 2014 - 19:03:01
Посетитель
Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013 Откуда: Ставропольский край
Помог: 10 раз(а)
[+]
esterio пишет:
Сессия стартует ранее вывода в браузер
Точнее после начала вывода XuPoH
Кодировка файлов какая?
----- ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
DlTA
Отправлено: 19 Марта, 2014 - 22:17:12
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
Hapson пишет:
PS тогда вопрос:
1) как вызвать родительский метод
2) почему в нем нельзя использовать $this
3) да и вообще... что будет в $this родительского метода, если вызвать его из дочернего класса???
1) зачем?
2) это зарезервированное слово(переменгая) , а при статическом вызове метода класса этой переменной нет, так как обьект не создавался
3) это не возможно, можно вызвать наследуемый метод который будет работать с контекстом нынешнего обьекта а не родительского
Мелкий
Отправлено: 20 Марта, 2014 - 08:45:54
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
DlTA пишет:
1) зачем?
Бывает нужно. В частности, если хочется сделать что-нибудь до и/или после определённого метода, не изменяя клиентский код.
DlTA пишет:
а при статическом вызове метода класса этой переменной нет, так как обьект не создавался
Всё бы так, но не так.
parent::method - не статический вызов, а вызов метода родительского класса в контексте именно этого объекта.
----- PostgreSQL DBA
LIME
Отправлено: 20 Марта, 2014 - 09:02:35
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
DlTA пишет:
2) это зарезервированное слово(переменгая) , а при статическом вызове метода класса этой переменной нет, так как обьект не создавался
может он и создавался
и даже несколько
но тогда тем более непонятно какой из них имеется ввиду под this
статические методы вызываются в контексте класса а не конкретного экземпляра(то есть хз какой тут может быть this) (Добавление)
например
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.