Základy v PHP – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Základy v PHP – PHP – Fórum – Programujte.comZáklady v PHP – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Anonym
~ Anonymní uživatel
429 příspěvků
13. 1. 2014   #1
-
0
-

Ahoj,

prosím nenašel by se tu někdo, kdo by mi pomohl se základní ulohou v PHP? Teprve se PHP učím a nevím (nebo spíše nechápu) vzorové zadání této ulohy:

Vytvořte v PHP třídu s jedním atributem, konstruktorem a metodou. Následně vytvořte instanci této třídy a zavolejte její funkci.

Nahlásit jako SPAM
IP: 147.228.209.–
Reklama
Reklama
Kit+11
Guru
13. 1. 2014   #2
-
0
-
Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Anonym
~ Anonymní uživatel
429 příspěvků
13. 1. 2014   #3
-
0
-

#2 Kit
Chápu správně, že řešení ulohy by mohlo vypadat takto?

<?
class trida
{
	var $atribut;
	function trida ($atribut)
	{
		$this->atribut=$atribut;
	}
	function metoda ()
	{
		echo "ahoj"
	}
}
$pokus = new trida;
$pokus->metoda();
?>
Nahlásit jako SPAM
IP: 147.228.209.–
Kit+11
Guru
13. 1. 2014   #4
-
0
-

#3 Anonym
To vypadá dobře, ale chce to drobné úpravy:

  • Název třídy je zvykem pojmenovávat s velkým písmenem, tedy "Trida"
  • místo "function trida" by mělo být "function __construct"
  • místo "new trida" by mělo být "new Trida('Ahoj')"
  • metoda "metoda" by podle zadání asi měla používat atribut

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Anonym
~ Anonymní uživatel
429 příspěvků
13. 1. 2014   #5
-
0
-

#4 Kit
 

<?
class trida
{
	var $atribut;
	function__construct ($atribut)
	{
		$this->atribut=$atribut;
	}
	function metoda ()
	{
		$this->atribut=$atribut;
		echo $atribut;
	}
}
$pokus = new Trida('ahoj');
$pokus->metoda();
?>


Chápu správně, že konstruktor mi jakoby zpřístupní ten atribut a díky tomu už v metoda() nemusím atribut dávat do vstupního paramatru?

Nahlásit jako SPAM
IP: 147.228.209.–
Kit+11
Guru
13. 1. 2014   #6
-
0
-

#5 Anonym
Konstruktor naplní objekt atributy. Chybí ti tam mezera. Metodu však máš chybně. Přečti si, jak se používá $this->.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Anonym
~ Anonymní uživatel
429 příspěvků
13. 1. 2014   #7
-
0
-

#6 Kit
 

<?
class trida
{
	var $atribut;
	function __construct ($atribut)
	{
		$this->atribut = $atribut;
	}
	function metoda ()
	{
		echo $this->atribut;
	}
}
$pokus = new Trida('ahoj');
$pokus->metoda();
?>

No řekl bych, že takhle...
 

Nahlásit jako SPAM
IP: 147.228.209.–
Kit+11
Guru
13. 1. 2014   #8
-
0
-

#7 Anonym
Skvělé. Tohle by mělo být skoro funkční. Ještě pár posledních změn:

  • místo "class trida" patří "class Trida"

  • místo "var" napiš "private"

  • místo "echo" napiš "return"

  • místo "$pokus->metoda();" napiš "echo $pokus->metoda();"

a budeš to mít tak, jak je to obvyklé.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Anonym
~ Anonymní uživatel
429 příspěvků
13. 1. 2014   #9
-
0
-

#8 Kit
Ok, děkuju za pomoc

Nahlásit jako SPAM
IP: 147.228.209.–
Anonym
~ Anonymní uživatel
429 příspěvků
13. 1. 2014   #10
-
0
-

#9 Anonym
Mohl bych se ještě zeptat na jednu ulohu? Tady nevím jak začít, protože nechápu co se po mě vlastně chce, tak jestli by to šlo říct trošku víc selsky.. :-)

Vytvořte v PHP objekt, který bude volat sám sebe.

Nahlásit jako SPAM
IP: 147.228.209.–
Kit+11
Guru
13. 1. 2014   #11
-
0
-

#10 Anonym
Takové věci jsou spíš pro pokročilé. Přesuň se raději na další úlohu a k této se vrať později.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Anonym
~ Anonymní uživatel
429 příspěvků
13. 1. 2014   #12
-
0
-

#11 Kit
Bohužel to přeskočit nejde :-( Musím splnit určité ulohy, aby se mi odemkla další skupina uloh (mamo na to takovy portal).

Nešlo by spíš jen nějak obecně poradit jak to řešit?

Nahlásit jako SPAM
IP: 147.228.209.–
Kit+11
Guru
13. 1. 2014   #13
-
0
-

#12 Anonym
Zkus to třeba na faktoriálu. Ten se v učebnicích dělává rekurzí.

Jinak mě nenapadá, proč by měl objekt volat sám sebe. Možná to má být něco, v čem bude self::

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Anonym
~ Anonymní uživatel
429 příspěvků
13. 1. 2014   #14
-
0
-

#13 Kit
To self je tam uvedeno v nápovědě, takže ho tam máme využít..

Nahlásit jako SPAM
IP: 147.228.209.–
Kit+11
Guru
13. 1. 2014   #15
-
0
-

#14 Anonym
To ale má jiný význam. Používá se to u statických atributů, metod a konstant.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Anonym
~ Anonymní uživatel
429 příspěvků
13. 1. 2014   #16
-
0
-

#15 Kit
No v materiálech je, že by objekt, který volá sám sebe měl vypadat takto:

class TestClass { 
public static $counter = 0; 
public $id; 
public function __construct() { 
$this->id = self::$counter++; 
} 
}
$pom = new TestClass();

		//funkce vola sama sebe
class TestClass { 
public $id; 
public function __construct() { 
$this->id = self::$id; 
} 
}


Ale moc tomu teda nerozumim.. hlavně nechápu, co má dělat to self

Nahlásit jako SPAM
IP: 147.228.209.–
Kit+11
Guru
13. 1. 2014   #17
-
0
-

#16 Anonym
Jenže self:: nikdy neodkazuje na objekt, ale na vlastní třídu a její komponenty. Mají v tom zmatek.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
nahňácanina
~ Anonymní uživatel
2 příspěvky
20. 1. 2014   #18
-
0
-

Příklad metody, která volá sama sebe:

class Trida{
	static function metoda($level){
		echo $level;
		if($level<=0)
			return;
		self::metoda($level-1);
	}
}
$trida=new Trida();
$trida->metoda(10); //volání z instance
Trida::metoda(10); //volání staticky
Nahlásit jako SPAM
IP: 213.151.77.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 49 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý