Oop vlastnosti promenne – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Oop vlastnosti promenne – PHP – Fórum – Programujte.comOop vlastnosti promenne – PHP – Fórum – Programujte.com

 

Lubošek
~ Anonymní uživatel
7 příspěvků
7. 5. 2015   #1
-
0
-

Zdravím všechny, mám dotaz na posílání promenných do třídy. já bych chtěl poslat promennou $zvenku do třídy do konstruktoru , tam ji nastavit na this->zvenku a pak ji sečíst v metodě secti() s vlastností $vevnitr

Class Scitani{

private $vevnitr;
private $secteno;
public  $zvenku;
 
   public function construct__($zvenku, $vevnitr, $secteno){  
          $this->zvenku = $zvenku;
          $this->vevnitr = $vevnitr;
          $this->secteno = $secteno;
 } 
 
   public function secti(){
          $this->vevnitr = 1
          $this->secteno = $this->vevnitr + $this->zvenku;
          
          return $this->secteno;
    }    
}

//neco co zvenku poslu dovnitr do tridy
$zvenku = $_POST['zvenku'];
$objScitani = new Scitani ($zvenku);  
echo $objScitani->secti();


ale zkrátka pokud do třídy pošlu něco zvenku tak to vyhodí chybu

Parse error: syntax error, unexpected '$this' (T_VARIABLE) in C:.........

neočekávaný $this na radku 16.

proč mi ta třída nebere data zvenku který pošlu přes objekt?

Mám zato že je slušnost všechny data co jdou do třídy nastavit v konstruktoru a pak s nima dál pracovat

v metodách?.

funguje to jen  takto:

Class Scitani{

private $vevnitr; private $secteno;

     public function construct__($vevnitr, $secteno){               $this->vevnitr = $vevnitr;           $this->secteno = $secteno;  }      public function secti($zvenku){           $this->vevnitr = 1;           $this->secteno = $this->vevnitr + $zvenku;                      return $this->secteno;     }     } $zvenku = $_POST['zvenku']; //neco co zvenku poslu dovnitr do tridy $objScitani = new Scitani ();   echo $objScitani->secti($zvenku);

Já bych si to představoval tak že , vlastnosti (vevnitř třídy) i proměnné (zvenku od uzivatele) inicializuji v

konstruktoru a pak s nimi už pracuju dál v metodách jako s $this->vlastnost a $this->promenna  a taky bych do třídy posílal proměnné jako $objScitani = new Scitani ($zvenku);  a ne $objScitani->secti($zvenku);.

 nevím jak to mám dělat správně? prosím o radu .Předem děkuji

Nahlásit jako SPAM
IP: 89.103.9.–
Lubošek
~ Anonymní uživatel
7 příspěvků
7. 5. 2015   #2
-
0
-

pardon za ten druhý kód tady je ještě jednou čitelnější

<?php 

Class Scitani{

private $vevnitr;
private $secteno;

 
   public function construct__($vevnitr, $secteno){    
          $this->vevnitr = $vevnitr;
          $this->secteno = $secteno;
 } 
 
   public function secti($zvenku){
          $this->vevnitr = 1;
          $this->secteno = $this->vevnitr + $zvenku;
          
          return $this->secteno;
    }    
}
$zvenku = $_POST['zvenku'];
//neco co zvenku poslu dovnitr do tridy
$objScitani = new Scitani ();  
echo $objScitani->secti($zvenku);
?>

taky pardon za ten neukončený příkaz v prvním nefunkčním kódu v metodě secti()

Nahlásit jako SPAM
IP: 89.103.9.–
q
~ Anonymní uživatel
219 příspěvků
7. 5. 2015   #3
-
+1
-
Zajímavé

Ten $this se mu tam nelíbí, protože za tou 1 nemáš středník.

Jinak myslím, že správné jméno pro konstruktor je __construct a máš ho se třemi parametry.

Nahlásit jako SPAM
IP: 213.211.51.–
Lubošek
~ Anonymní uživatel
7 příspěvků
8. 5. 2015   #4
-
0
-

 

dík za ten __construct ale proč nemůžu v konstruktoru nastavit třeba 20 vlastností nebo 20 promenných???

 

Nahlásit jako SPAM
IP: 89.103.9.–
Kit+15
Guru
8. 5. 2015   #5
-
0
-

#4 Lubošek
Můžeš si těch vlastností nastavit třeba 50, ale slušně vychovaný programátor obvykle nedává víc než 4. Ve tvém příkladu by stačila jedna.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:221:5...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Lubošek
~ Anonymní uživatel
7 příspěvků
8. 5. 2015   #6
-
0
-

#5 Kit
mohl by jsi mi  prosím tě ukázat nebo jen napsat jak správně zacházet s vlastnostma třídy a jak s proměnnýma ?

jak posílat proměnné do třídy jak zacházet s konstruktorem?

tato verze mi nefunguje sice nehlásí chybu ale taky mi nic nepřičte (nic se nezobrazí)?.

Nejde mi o to rozběhnout tenhle kód ale o to abych to pochopil jak to dělat správně .předem dík 

Class Scitani{

private $vevnitr;
private $secteno;

 
   public function __construct($zvenku){    
          $this->zvenku = $zvenku;
          
 } 
 
   public function secti(){
          $this->vevnitr = 1;
          $this->secteno = $this->vevnitr + $this->zvenku;
          
          return $this->secteno;
    }    
}
$zvenku = $_POST['zvenku'];
//neco co zvenku poslu dovnitr do tridy
$objScitani = new Scitani ();  
echo $objScitani->secti($zvenku);
Nahlásit jako SPAM
IP: 89.103.9.–
Lubošek
~ Anonymní uživatel
7 příspěvků
8. 5. 2015   #7
-
0
-

nepomůže ani když pošlu proměnnou do třídy takto:

$zvenku = $_POST['zvenku'];
//neco co zvenku poslu dovnitr do tridy
$objScitani = new Scitani ($zvenku);  
echo $objScitani->secti()


mám verzi PHP 5.4.5 jestli to pomůže?.

Nahlásit jako SPAM
IP: 89.103.9.–
Kit+15
Guru
8. 5. 2015   #8
-
0
-

#6 Lubošek
Zkus třeba následující příklad, ve kterém máš vytvoření objektu, modifikaci i prezentaci. 

<?php
class Scitani{
    private $vevnitr;

    public function __construct($pocatek) {
        $this->vevnitr = $pocatek;
    }

    public function pricti($zvenku) {
        $this->vevnitr += $zvenku;
    }

    function __toString() {
        return "Uvnitř je číslo " . $this->vevnitr;
    }
}

$zvenku = $_POST['zvenku'];
$objScitani = new Scitani(42);
$objScitani->pricti($zvenku);
echo $objScitani, "\n";
Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:221:5...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Lubošek
~ Anonymní uživatel
7 příspěvků
8. 5. 2015   #9
-
0
-

#8 Kit
díky moc tvoje  ukázka je mi jasná a funguje už jsem rozchodil i tu svoji ukázku .

Teď mám ještě poslední , spíše teoretický dotaz : co se správně má v konstruktoru odehrávat z příkladu je jasné že z venku přijde číslo 42 a tím číslem se naplní vlastnost $this->vevnitr a pak se s ní pracuje dál v metodě přičti, tzn. že se inicializovala vlastnost třídy což je účelem konstruktoru, ale když si psal že v konstruktoru slušný programátor inicializuje max 4 vlastnosti tak jak se pak postupuje dál když potřebuji inicializovat více vlastností , např. odeslání emailu - z venku přijde - from , to , subject, message, attachment,.... jak se má pak postupovat? předem dík

Nahlásit jako SPAM
IP: 89.103.9.–
Kit+15
Guru
8. 5. 2015   #10
-
0
-

#9 Lubošek
Pokud to vezmu obecně, tak by konstruktor mohl mít 3 položky: Seznam hlaviček, text zprávy a nepovinný seznam příloh. Těch možností, jak to uspořádat, je však víc.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:221:5...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Lubošek
~ Anonymní uživatel
7 příspěvků
8. 5. 2015   #11
-
0
-

#10 Kit
dík moc za rady

Nahlásit jako SPAM
IP: 89.103.9.–
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, 45 hostů

 

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