Object PHP

10 отговора 356 прегледа
#1

Object PHP

zdravejte
eto edin kod kojto ne vyrwi pri mene:

<?php
class PrintName
{
var $name;
function show_name()
{
echo "Hi $name!";
}
}
$tmp = new PrintName;
$tmp -> name = "Alice";
$tmp -> show_name();
?>

Da ne bi nqkakwa nastrojka da trqbwa da se butno v php-to, tuk kato principno nqma kude da se sgre6i na tozi kod, suob6tenie za gre6ka ne dawa, izwejda kato rezultata samo "Hi", a stojnostta na promenliwata $name="Alice" ne q wizualizira.

Отговор
в отговор на noname #2

Re: Object PHP

>principno nqma kude da se sgre6i na tozi kod

Винаги е нещо малко:

$tmp = new PrintName;

трябва да бъде:

$tmp = new PrintName();

--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck
Отговор
в отговор на Mycлoн #3

Re: Object PHP

towa koeto kazwash za $tmp = new PrintName();
ne e wqrno, t.e to moje da e vqrno ne pak ne stawa taka.
a vsi4ki primeri koito sum gledal kato se suzdawa instanciq na klas - suzdawane na obekt e:

$tmp = new PrintName;
e ne
$tmp = new PrintName();

Отговор
в отговор на noname #4

Re: Object PHP

ахам... и този код защо работи при мен?

<?php
require_once( '../Category.php' );

$pers = new CategoryPersister();
$categories = $pers->getAll();

?>

и защо не пуснеш грешката, която получаваш?

--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck
Отговор
в отговор на noname #5

Re: Object PHP

чак сега погледнах - остави си навиците от Ц++ или джава на вратата на клуба :)

function show_name()
{
echo "Hi $name!";
}

за да имаш достъп до атрибута name трябва да си го поискаш с $this->name;

--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck
Отговор
в отговор на Mycлoн #6

Re: Object PHP

s $this->name mi e qsno 4e raboti
ama tozi primer go vseh ot edna kniga na PHP i 1:1 go pisha i ne stawa
ina4e s this nqma problemi , 6toto se obru6tam vutre v clasa, a ina4e kato izlqza ot nego i suzdam obekt i mu proswoq stojnost na poleto ot klasa ne stawa.
taka kakto sum opisal v primera

Отговор
в отговор на noname #7

Re: Object PHP

Муслон правилно ти каза за $this->, но не знам дали разбра къде да го сложиш...

Ето ти кода (явно са направили пропуск, било автори, било издатели - случва се):

<?php
class PrintName
{
var $name;
function show_name() {
echo "Hi $this->name!";
}
}
$tmp = new PrintName;
$tmp -> name = "Alice";
$tmp -> show_name();
?>

Когато искаш да предадеш аргумент в метода(функцията) - ЗАДЪЛЖИТЕЛНО му поставяш $this-> ! Някъде в книжката ти трябва да е подчертано, ако не - отбележи си го!

Отговор
в отговор на NetWalker #8

Re: Object PHP

napulno go razbiram kude se slaga $this, taka sum go probwal s this i stawa nqma problemi,poblema 4e ima konstrukciq v koqto ne se polzwa $this , no za sujalenie ne starbowa ne6to,ne dawa nikakwa gre6ka no ne prisvoqwa stojnost na poleto koeto e definirano v classa

Отговор
в отговор на noname #9

Re: Object PHP

Дано си разбрал и "ЗАЩО?" !

Не знам от къде четеш и какво експериментираш, но си има ЯСНО НАПИСАН СИНТАКСИС:

За достъп до атрибут на обект се използва синтаксиса: $this->attribute. Форматът this->$attribute посмъртно няма да ти сработи (поне не и във версия 4). А това: $this->$attribute ще работи само ако $attribute е низ, който съдържа името на атрибута за използване.

var $attrib;
...
$attrib_name="attrib";
echo $this->$attrib_name;

Всичко това работи и за функции.

НЯМА други конструкции, комбинации, конфигурации и каквото и да е там...
Просто НЯМА ! СИНТАКСИС !

Отговор
в отговор на noname #10

Re: Object PHP

Кажи коя книга четеш. Пусни кода от книгата тук. Като нищо имаш глобална или локална променлива със същото име като атрибута и без $this се обръща към нея.

Ако още не вярваш, че ти трябва $this, за да се обърнеш към атрибут на класа - дръпни някой от PEAR пакетите. Аз не съм авторитет, като PEAR разработчиците, само използвам обекти и класове в езика .

--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck
Отговор
в отговор на noname #11

Re: Object PHP

<?php

class showName {

var $myName = '';

function showName($your_name) {
$this->myName = $your_name;

return $this->myName;
}
}

$name = new showName('Mitko Angelov');

echo 'Hello from me. I am ' . $name;

?>

Отговор