| Autor | Zpráva | ||
|---|---|---|---|
| cpbbt Profil * |
#1 · Zasláno: 14. 1. 2010, 23:44:35
Jde udělat, aby se parametr pro danou metodu předal buď v konstruktoru anebo v dané metodě případně obojím?
Díky. |
||
| Majkl578 Profil |
#2 · Zasláno: 15. 1. 2010, 00:02:13
Konstruktor se v php zapisuje jako metoda __construct(). Její případné parametry se přidají do vytvoření instance třídy.
Příklad: class Foo
{
public function __construct($text)
{
echo $text;
}
}
$foo = new Foo('Hello');//vypíše Hello
Jinak je dobré přečíst si v manuálu sekce základy OOP a o konstruktoru. |
||
| cpbbt Profil * |
Majkl578:
Já jsem měl na mysli, abych mohl buď zavolat konstruktor s parametrm anebo metodu s parametrem. Aby šlo zavolat : 1. $oo=new moje(5); echo $oo->obvod(); Anebo 2 .$oo=new moje(); echo $oo->obvod(5); Díky class moje
{ // BEGIN class moje
// variables
private $r;
// constructor
function __construct ($r)
{ // BEGIN constructor
$this->r=$r;
} // END constructor
public function obvod($r)
{ // BEGIN function obvod
$this->r=$r;
$o=2*3.14*$this->r;
return $o;
} // END function obvod
} // END class mojeModerátor Majkl578: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na
). |
||
| mckay Profil |
#4 · Zasláno: 15. 1. 2010, 05:28:57
cpbbt:
> Já jsem měl na mysli, abych mohl buď zavolat konstruktor s parametrm anebo metodu s parametrem. > Aby šlo zavolat : Co co přesně je na tom za problém? $oo=new moje(5); echo $oo->obvod(); Tohle je správný zápis. Pokud chceš, aby se vypisovalo to, co předáváš jako parametr při instanci třídy, napiš to do construktoru (__construct()). Vkládej kód do , je to pak přehlednější.
|
||
| Majkl578 Profil |
#5 · Zasláno: 15. 1. 2010, 08:46:03
V tom případě je možností nepovinný parametr v konstruktoru, který při zadané hodnotě zavolá funkci na nastavení.
|
||
| Nox Profil |
#6 · Zasláno: 15. 1. 2010, 09:55:24 · Upravil/a: Nox
Abych doplnil:
u funkce obecně můžeš uvést nepovinné parametry a to tak, že jim zadáš výchozí hodnotu, nemusí to být jen u metody (konstruktu), ale i u normálních funkcí public function __construct($var = NULL){
...
}to NULL je příklad, často ho používám, ale může být i "abcd" nebo 7 atd. pokud má funkce víc parametrů a některé jsou nepovinné ale ne všechny, tak první musí být (z logických důvodů) ty povinné |
||
| cpbbt Profil * |
#7 · Zasláno: 15. 1. 2010, 16:13:45
Ale když ji mím tak napsanou a zavolám:
$oo=new moje(5); echo $oo->obvod(); Tak to vypíše nulu.
class moje
{ // BEGIN class moje
// variables
private $r;
// constructor
function __construct ($r)
{ // BEGIN constructor
$this->r=$r;
} // END constructor
public function obvod($r)
{ // BEGIN function obvod
$this->r=$r;
$o=2*3.14*$this->r;
return $o;
} // END function obvod
} // END class moje
|
||
| Nox Profil |
#8 · Zasláno: 15. 1. 2010, 16:27:53
cpbbt:
„Ale když ji mím tak napsanou a zavolám:“ jak to souvisí s nepovinností parametru konstruktoru? „Tak to vypíše nulu.“ nechápu, v obvodu nastavuješ $this->r=$r;, ale $r tam nepředáváš...máš zapnuté error_reporting(E_ALL)? drobnosti $o=2*3.14*$this->r;return $o; => return 2*3.14*$this->r; 3.14 => M_PI |
||
| Alphard Profil |
#9 · Zasláno: 15. 1. 2010, 17:34:35
Třeba nějak takhle. Ale zadáním parametru u metody getObvod() se mění proměnná $r, jestli je to žádoucí, nebo ne, záleží na konkrétní třídě.
<?php
class Kruh
{
private $r;
public function __construct($r = null)
{
$this->setPrumer($r);
}
public function setPrumer($r)
{
if (is_numeric($r))
{
$this->r = $r;
return true;
}
return false;
}
public function getObvod($r = null)
{
$this->setPrumer($r);
return round(2*M_PI*$this->r, 2);
}
}
$k = new Kruh(5);
echo $k->getObvod(); |
||
|
Časová prodleva: 16 let
|
|||
0
).