2013-12-20 7 views
0

Немного путают с PHP, потому что он не объявляет типы переменных объекта. Это упрощенный код, который не работает. Я получаю, почему я получаю сообщение об ошибке, но не уверен, как в PHP я могу указать, что $ pb является объектом PushBot, и поэтому у него есть методы, которые можно использовать.PHP, как объявить члена класса?

class Bot 
{ 

    public $pb; 

//Constructor 
function __construct(){ 
    require_once('../PushBots.class.php'); 
    // Application ID 
    $appID = ''; 
    // Application Secret 
    $appSecret = ''; 
    // Push The notification with parameters 
    $this ->pb = new PushBots(); 
    $this ->pb->App($appID, $appSecret); 

    } 

//Method. The $this->pb->Push() does not work 
public function sendMessage(){ 
     $this->pb->Push(); 
    } 

} 

// Клиент вызова класс

$bot = new Bot(); 
$bot->sendMessage(); 

Ошибки я получаю:

Анализировать ошибка: синтаксическая ошибка, неожиданный '$', когда линия

$this->pb->Push(); 

называется.

Я предполагаю, потому что он не знает, что $ pb является объектом PushBot на данном этапе?

Могу ли я не объявить это что-то вроде:

Public Pushbot $pb; 
+0

PHP не является строго типизированный язык. Значит, вы можете иметь либо int, либо объект PushBots, либо любой другой тип в любой переменной. Вы также можете перезаписывать переменные разными типами. Я вообще не рекомендую это делать. –

+1

Это не имеет никакого отношения к типу объекта - у вас есть базовая синтаксическая ошибка. Это ваш фактический код? Попробуйте использовать редактор с подсветкой кода, NetBeans покажет вам синтаксические ошибки. Редактирование: я вижу, вы сказали, что упростили код - разместите свой ACTUAL-код - строку до и после ошибки. – Jessica

+0

абсолютно, но как это сказать в функции sendMessage(), что $ pb является PushBot и поэтому имеет метод Push() – drlobo

ответ

1
Parse error: syntax error, unexpected '$' for when the line 

Это ошибка синтаксического анализа, то есть ваш код даже не был бежать еще. Проверьте код на любые ошибки sytnax (код, который вы опубликовали, не содержит синтаксическую ошибку).

how in PHP I can specify that $pb is a PushBot object

Хотя никакого отношения к синтаксической ошибке, если вы используете какой-то инверсии зависимостей можно использовать типа намекая требуют определенного объекта передается:

// will cause fatal error if anything other than an object of type Pushbot is passed 
function __construct(Pushbot $pb) 
+0

извините мою ошибку !!! Ужасно, но я не использовал PHP-редактор – drlobo

+0

Я не верю, что зависимые инъекции и тип-намеки связаны ... – Jessica

+0

Правда, они разделены, но я упоминал, что это потому, что (помимо лучшей практики), если он * инъекции, то он мог бы воспользоваться некоторыми из более строгих особенностей PHP, которые он, похоже, жаждет. – webbiedave

Смежные вопросы