2010-07-05 4 views
0

Будем надеяться, что быстро и легко осветление ... С помощью этого кода, найденного в действие в контроллере:очень простой OOP вопрос

...   
$SaveAccount = new SaveAccount(); 
$SaveAccount->saveAccount($username, $password, $email); 
... 

Означает ли вторая строка «запустить метод„saveAccount()“на ? новый объект это то, что -> означает Благодаря

+4

* (ссылка) * [Список токенов Parser PHP] (http://www.php.net/manual/en/tokens.php) - см. 'T_OBJECT_OPERATOR' – Gordon

+0

Это хорошая рекомендация - особенно для сопоставления каждого с именами токенов, которые –

ответ

8

-> используется с объектами в строке ниже:?!.

$SaveAccount->saveAccount($username, $password, $email); 

saveAccount метод запускается из объекта$SaveAccount

Я хотел бы предложить вам взглянуть на:

Object Oriented Programming with PHP

+0

Итак, я считаю, что правильно думал ... Спасибо! – Joel

+0

@Joel: Добро пожаловать – Sarfraz

3

означает ли вторая строка «запустить метод» saveAccount() «на новый объект?

Да.

Это что, ->?

Нет, это означает «получить метод или свойство» с именем saveAccount. Вместе с () он получает значение «запустить метод« saveAccount() ». Примечание: технически вы не можете получить метод без его выполнения, поэтому $obj->methodname не имеет значения без (), но это объяснение может помочь вам концептуально.

+0

Cool-это тоже полезно. Спасибо! – Joel

+0

Ваша «заметка», это не совсем так. Посмотрите на это: http://ideone.com/ddUlj Это действительный код, который перекликается с «Bar» в PHP 5.3 (не работает на этом сайте, хотя из-за использования 5.2). Вы можете «получать» функции без их выполнения. На других языках это обычная практика, например, в JavaScript. В PHP это часто не используется, но это абсолютно возможно, а иногда и хорошая функция. – selfawaresoup

+0

@Techpriester Это не функция, которая выводит свойство, которое является лямбда-функцией. Есть выраженные внутренние различия между ними, и все еще верно, что вы не можете выполнить '$ a-> foo = function() {}; $ A-> Foo() '; вы должны использовать временную переменную. – Artefacto

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