Добрый день. Изучаю ООП. Прошу направить. Есть следующий класс: Код (Text): class Email { public $to = ''; public $subject = ''; public $message = ''; function __construct( $args = false ) { $this->init_properties( $args ); } function init_properties( $args ) { $properties = get_class_vars( get_class( $this ) ); foreach ( $properties as $name => $val ) { if( isset( $args[$name] ) ) $this->$name = $args[$name]; } } function get_to() { if ( $this->to == '' ) { return 'my@mail.ru' } } function send_mail() { $to = $this->get_to; $subject = $this->subject; $message = $this->message; mail( $to, $subject, $message ); } } function send_my_mail( $to = '', $subject = '', $message = '' ) { $args = array( 'to' => $to, 'subject' => $subject, 'message' => $message ); $email = new Email( $args ); return $email->send_mail(); } Почему при вызове функции send_my_mail( '', 'Тема', 'Сообщение' ) выдаёт ошибку? Код (Text): Notice: Undefined property: Email::$get_to И как её исправить. Прошу помощи
В методе send_mail() идет присвоение $to = $this->get_to; get_to - для него не метод, это свойство (переменная) вот так get_to() - это метод, скобки забыли. Т.е. в 24-ой строке нужно записать $to = $this->get_to(); Соответственно в тексте ошибки и написано : Код (Text): Примечание: неопределенное свойство: Email :: $ get_to
Бывает и $this-> не пропишешь тоже потом думаешь что за...! Порой очень полезно вставлять текст ошибки в гугл переводчик
А ещё лучше пользоваться правильной средой разработки. Как минимум правильным редактором, - 99% вопросов по ошибкам синтаксиса отпадут.
Это для ленивых! Тру пацаны пишут в в бумажном блокноте, потом перепечатывать в блокнот (текстовый редактор)