ugrás a tartalomhoz

php Objektum Orientált + kód magyarázat

Pallosi Péter · 2012. Okt. 30. (K), 09.43
Sziasztok az egyetemen most vagyok majdnem 2.hónapja eddig csak strukturális nyelvi alapokat vettük,de most bejött az OOP,és nem értem egyáltalán sokat olvasok róla javában kezdtük el az oop-t,de én szeretném php-ban is,de a szemléletem még nincs meg hozzá.
Valaki részletesen elmagyarázná az alábbi kód részletet?
Legyen szíves olyan válaszolni aki nem fog elküldeni melegebb éghajlatra a kódommal ezt az egyik könyvben találtam tökéletesen működik.
Egy nagy bajom van a programozással,hogy nincs sehol jó magyar nyelvű könyv php oop-ről.
És egy középfokú angol nyelvvizsgával nem sokra megyek.(közel 5éve csináltam a vizsgát)
<?php

class Login // itt létre hozzuk a login osztályunkat,ha nem jól tudom kijavítanál? 
{
  private $_id; // na igen mit is jelent pontosan,hogy private mit csinál ez?
  private $_username;
  private $_password;
  private $_passmd5;

  private $_errors;
  private $_access;
  private $_login;
  private $_token;

  public function __construct()//Ezt sem értem,hogy mi célt szolgál
  {
    $this->_errors = array();// a $this itt mi célt szolgál?
    $this->_login  = isset($_POST['login'])? 1 : 0; //ezt nem tudom értelmezni
    $this->_access = 0; // és ezt se
    $this->_token  = $_POST['token'];//És ezt se!

    $this->_id       = 0;// szintén nem tudom mit jelent
    $this->_username = ($this->_login)? $this->filter($_POST['username']) : $_SESSION['username'];// szintén nem tudom mit jelent
    $this->_password = ($this->_login)? $this->filter($_POST['password']) : '';// szintén nem tudom mit jelent
    $this->_passmd5  = ($this->_login)? md5($this->_password) :
$_SESSION['password'];// szintén nem tudom mit jelent
  }

  public function isLoggedIn() // szintén nem tudom mit jelent
  {
    ($this->_login)? $this->verifyPost() : $this->verifySession(); // szintén nem tudom mit jelent

    return $this->_access;// szintén nem tudom mit jelent
  }

  public function filter($var)// szintén nem tudom mit jelent
  {
    return preg_replace('/[^a-zA-Z0-9]/','',$var);//itt ellenőrizzük,hogy megfelelnek a karakterek
  }

  public function verifyPost()// szintén nem tudom mit jelent
  {
    try// szintén nem tudom mit jelent
    {
      if(!$this->isTokenValid())// szintén nem tudom mit jelent
         throw new Exception('Invalid Form Submission');// szintén nem tudom mit jelent

      if(!$this->isDataValid())// szintén nem tudom mit jelent
         throw new Exception('Invalid Form Data');// szintén nem tudom mit jelent

      if(!$this->verifyDatabase())// szintén nem tudom mit jelent
         throw new Exception('Invalid Username/Password');// szintén nem tudom mit jelent

    $this->_access = 1;// szintén nem tudom mit jelent
    $this->registerSession();// szintén nem tudom mit jelent
    }
    catch(Exception $e)// szintén nem tudom mit jelent
    {
      $this->_errors[] = $e->getMessage();// szintén nem tudom mit jelent
    }
  }

  public function verifySession()// szintén nem tudom mit jelent
  {
    if($this->sessionExist() && $this->verifyDatabase())// szintén nem tudom mit jelent
       $this->_access = 1;// szintén nem tudom mit jelent
  }

  public function verifyDatabase()// szintén nem tudom mit jelent
  {
    //Database Connection Data// szintén nem tudom mit jelent
    mysql_connect("localhost", "root", "") or die(mysql_error());// szintén nem tudom mit jelent
    mysql_select_db("example") or die(mysql_error());// szintén nem tudom mit jelent

    $data = mysql_query("SELECT ID FROM users WHERE username = '{$this->_username}' AND password = '{$this->_passmd5}'");//itt lekérzeünk

    if(mysql_num_rows($data))//itt végig megyünk a sorokon
      {
        list($this->_id) = @array_values(mysql_fetch_assoc($data));// szintén nem tudom mit jelent
        return true;// szintén nem tudom mit jelent
      }
    else
      { return false; }// szintén nem tudom mit jelent
  }

  public function isDataValid()// szintén nem tudom mit jelent
  {
    return (preg_match('/^[a-zA-Z0-9]{5,12}$/',$this->_username) && preg_match('/^[a-zA-Z0-9]{5,12}$/',$this->_password))? 1 : 0;// szintén nem tudom mit jelent
  }

  public function isTokenValid()// szintén nem tudom mit jelent
  {
    return (!isset($_SESSION['token']) || $this->_token != $_SESSION['token'])? 0 : 1; // szintén nem tudom mit jelent
  }

  public function registerSession()// szintén nem tudom mit jelent
  {
    $_SESSION['ID'] = $this->_id;// szintén nem tudom mit jelent
    $_SESSION['username'] = $this->_username;// szintén nem tudom mit jelent
    $_SESSION['password'] = $this->_passmd5;// szintén nem tudom mit jelent
  }

  public function sessionExist()// szintén nem tudom mit jelent
  {
    return (isset($_SESSION['username']) && isset($_SESSION['password']))? 1 : 0;// szintén nem tudom mit jelent
  }

  public function showErrors()// szintén nem tudom mit jelent
  {
    echo "<h3>Errors</h3>";// szintén nem tudom mit jelent

    foreach($this->_errors as $key=>$value)// szintén nem tudom mit jelent
      echo $value."<br>";// szintén nem tudom mit jelent
  }
}

?>
 
1

Ezt én sem értem

eddig bírtam szó nélkül · 2012. Okt. 30. (K), 09.57
Nem teljesen tiszta, hogy ha korábban már láttál PHP-t, akkor mire véljem a kommentjeid 90%-át... (alig van olyan, aminek köze lenne az OOP-hez)

Egyébként azt sem értem, hogy egy középfokú angol nyelvtudás birtokában hogy a bánatba nem érted az angol doksikat.
Én mindössze másfél évig, heti egy órában tanultam angolt (majd' harminc éve) és az egyszerű dokumentációkkal általában nincs gondom. Cikkek esetében néha elakadok, de az más téma.
2

Angol!

Pallosi Péter · 2012. Okt. 30. (K), 10.14
Alapvetően 6éve használtam utoljára angolt és csak most kezdtem el újból tehát mintha nem is tudnék semmit angolul alapvető dolgokkal tisztába vagyok!
5

Ha az alap nyelvtan megy,

eddig bírtam szó nélkül · 2012. Okt. 30. (K), 10.25
Ha az alap nyelvtan megy, akkor csak szótár és kitartás kérdése.
De azt végképp nem értem, hogy korábban mit csináltál a PHP-vel, ha ennyi minden ismeretlen.

   echo "<h3>Errors</h3>";// szintén nem tudom mit jelent
WTF??? Ha még ezt sem tudod... Biztos, hogy volt már dolgod PHP-vel?
7

bocsi

Pallosi Péter · 2012. Okt. 30. (K), 10.27
De ezt tudom,hogy mit jelent!
Kiírja,hogy error h3 betű mérettel!
8

Érted már mi a gond ezzel?

eddig bírtam szó nélkül · 2012. Okt. 30. (K), 10.52
Érted már mi a gond ezzel? :-)
Így honnan tudjuk, hogy mi az amit valóban meg kellene magyarázni?

Amit így hirtelen hozzá tudok tenni (nem feltétlenül szakszerűen) :
A _construct az osztály konstruktora.
Amikor létrehozol az osztályból egy példányt, akkor lefut a konstruktor, amiben inicializálhatod az objektumodat. Kezdőértéket adhatsz a példányváltozóknak, létrehozhatsz újabb objektumokat stb. stb. stb. Lényeg, hogy csak egyszer fut le (nem is szabad külön meghívni), amikor létrejön az új objektum.

A $this-> hivatkozások az ú.n. példányváltozókat jelzik. A példányváltozó lényege, hogy az osztályból létrehozott objektumhoz tartozik, az objektumon belül minden metódus láthatja.


Ahogy elnézem, gondot jelent a ? : is. Ezt általában feltételes értékadáshoz használják: a ? elé egy logikai kifejezést írsz, mögé érték1:érték2 formában egy értékpárt. A kifejezés értéke érték1, ha igaz a feltétel, érték2, ha hamis.
És nagyon kell vigyázni, hogy lehetőleg több ilyet ne akarj egymásba ágyazni, mert kínos meglepetések érhetnek. :-)
3

Azért vicces. :)

T.G · 2012. Okt. 30. (K), 10.15
Szerintem ez a topic nagyon vicces. :) De tényleg, jót nevettem.

(nem biztos, hogy pont egy Login osztállyal kell megismerni az OOP-t, nem véletlenül szokták az Állat osztályt elővenni, majd a Kutya osztályt illetve a Buksi objektumot... szerintem az OOP alapjairól száz számra vannak magyar leírások, inkább azokból olvasgassál, majd ha ott nem értesz valamit, akkor arra kérdez rá, a nem értek semmit, segítsetek!-kel nehéz bármi is kezdeni)
4

Megfogadom!

Pallosi Péter · 2012. Okt. 30. (K), 10.17
Megfogadom a tanácsot,elővettem egy oop-s könyvet javaból és ez legalább magyar és most elkezdtem teljesen az elejéről mert szinte semmivel sem vagyok tisztába!!!
10

Ha esetleg nem erről a

BlaZe · 2012. Nov. 1. (Cs), 01.59
Ha esetleg nem erről a könyvről van szó, akkor bátran ajánlom Angster Erzsébet Objektumorientált tervezés és programozás - Java I. kötetét. Bár már nagyon rég volt a kezemben, az OOP (nagyon) alapok nagyon érthetően vannak benne leírva, gyakorlatilag programozói tudást sem feltételez. Klasszikus, érthető tankönyv stílusban (ez alapvetően egy tankönyv), tanártól. Persze ez szubjektív, én az ő könyveiből tanultam meg anno programozni (jó kis turbo pascal könyvek :)).

Illetve:
http://hu.wikipedia.org/wiki/Objektumorient%C3%A1lt_programoz%C3%A1s Most látom, hogy Felhő cikke is be van ide linkelve :)

Aztán ha ezek az alapok megvannak, akkor lehet menni a mélyvízbe a patternekkel, hogy ne csak OOP, de hasznos is legyen a produktum.
6

nem akadékoskodni akarok

zzrek · 2012. Okt. 30. (K), 10.26
Nem akadékoskodni akarok, de túl sok kérdést tettél fel, és túl kevésnek látszik amit megpróbáltál tenni annak érdekében, hogy megértsd a kódot. Nagyobb önállóságot várnék el, több igényt rá, hogy saját magad járj utána a dolgoknak. Ez egyfajta önbecsülés: "meg tudom csinálni, rá tudok jönni". Büszkének kellene lenned, hogy segítség nélkül is elboldogulhatsz. Ha ez nem alakult ki benned, akkor nehezen leszel önálló, értékes munkatárs.
Néhány tippet adnék, hogy hogyan tudsz te magad utánajárni a kérdéseidnek:

Nagyon sok magyar nyelvű anyag van a PHPről, kulcsszavak alapján akár a google is kidob sok magyarázatot. Nem feltétlenül egy komplett leírást kell találnod, amiben minden benne van, hanem egyenként is utánajárhatsz dolgoknak, amíg ki nem alakul a kép.
Sok-sok példát is találhatsz.

"private $_id; // na igen mit is jelent pontosan,hogy private mit csinál ez?"

A private tipikus kulcsszó, amire rá lehet keresni. Változó deklaráció hatókörrel kapcsolatos.

"public function __construct()//Ezt sem értem,hogy mi célt szolgál "

A construct a konstruktorra utal, alapvető az OOPben, az alapokat olvasd át (még egyszer).

"$this->_errors = array();// a $this itt mi célt szolgál? "
A "this" az aktuálisan létrejövő objektumra utal. Azt jelenti hogy "ez" vagyis épp "ez", ami létrejön.

"$this->_login = isset($_POST['login'])? 1 : 0; //ezt nem tudom értelmezni "
Ez nem jó kérdésfeltevés, mert nem tudom, hogy ebből mit nem értettél. Az isset-et? A $_POST tömböt? A ternális operátort? (valami?érték:érték) Sajnos nagyon sokfelé kellene elmenni a magyarázattal, légyszíves pontosíts hogy mit nem értesz.
Keress rá a kulcsszavakra (isset, post, ternális operátor)

Tovább nem is megyek, túl sok kérdést tettél fel, túl könnyen várod el, hogy valaki mindebben egyértelműen kitalálja hogy mit nem értesz és olyan választ adjon amitől megvilágosodsz.

Nemcsak a probléma értelmezésébe, de a kérdésfeltevésbe is több energiát kell befektetned, több önállóságot. Próbáld részekre bontani a problémát.

Ha nem megy a részekre bontás, mert az összképet nem érted, akkor viszont ne soronként kommentezd, hogy "ezt sem értem", hanem első körben arra kérdezz rá, hogy a beillesztett kódrészletnek mi a célja.
Sok sikert!
9

Koncepcio

janoszen · 2012. Okt. 30. (K), 11.17
Az OOP koncepciojaval van szerintem, gond. Kezdjuk az elejen. Van egy osztalyod, ami valamit reprezental. Ha mondjuk elolenyekben gondolkozunk, akkor van mondjuk "Ember":

class Ember {
   /**
    * Az ember-peldany nevet tarolja. Mivel protected, ezert kivulrol nem irhato,
    * csak ebbol az osztalybol es a gyerekosztalyokbol.
    *
    * @var string
    */
   protected $nev;

   /**
    * Inicializalja az ember parametereit. A konstruktor az osztaly peldanyositasakor
    * hivodik meg automatikusan.
    * 
    * @param string $nev
    */
   public function __construct($nev) {
      $this->nev = $nev;
   }

   /**
    * Visszaadja az ember-peldany nevet.
    */
   public function getNev() {
      return $this->nev;
   }
}
Namost ezt a peldanyt igy tudjuk hasznalni:

$jani = new Ember('Jani');
// Azt irja ki, hogy 'Jani'
echo($jani->getNev());
// Hibara fog futni.
$jani->nev = 'Bela';
Az objektumba tehat bele tudsz csomagolni logikailag osszetartozo fuggvenyeket es adatokat, hogy kifele egy egyseges feluletet mutassanak. Az is fontos, hogy az osztaly belso mukodese kivulrol lenyegtelen, tehat kivulrol csak arra alapozhatsz, ami a kivulrol "latszik", tehat public. Nagyon rossz praktika peldaul az, hogy egy osztaly, ami nem kimenettel foglalkozik, echo-val ir ki barmit. Tilos! Ezt hivjak egysegbe zarasnak.

A kovetkezo fontos dolog az oroklodes:

class Fiu extends Ember {
    /**
     * Atallitja a Fiu peldany nevet valami masra. Mivel a $this->nev protected,
     * ebbol az osztalybol is tudjuk irni. Ha private lenne, nem tudnank.
     *
     * @param string $nev
     */
    public function setNev($nev) {
        $this->nev = $nev;
    }
}
Lathato, hogy a Fiu osztaly kiterjeszti az Embert, azaz orokol tole mindent. Mivel a $nev valtozo az Ember-ben protected, ezert a setNev-bol meg irni is tudjuk.

Remelem, eme rovid bevezetovel sikerult tisztaba tenni nehany alapfogalmat. A tovabbi reszletekert olvasd el Felho Objektumorientált programozás előnyei a kódújrahasznosítás jegyében cimu cikket vagy tanulj meg angolul. :)
11

Magyarul tanulni - luxus?!

Pepita · 2012. Nov. 4. (V), 23.08
Bizony, ezt a kérdést sokan rosszul ítélték itt meg. Egyáltalán nem luxus, felesleges, stb. igény az, ha valaki az alapokat anyanyelvén kívánja megtanulni. U. is nagyon sokan, akik nagyon jól értenek angolul (esetleg több nyelven is), mégis a logikai összefüggéseket kizárólag "anyanyelvükön" (gondolatban) képesek összerakni / megérteni (ha jól tudom: bő 80%).

Tehát jogos igény, ha magát az OOP-t magyarul akarod megérteni.

Erre mondjuk nem a PHP a legjobb nyelv; Angster tanárnő tankönyvét én is tudom javasolni (ha már Java). De mindenképp egy erősen típusos, eleve OOP-szemléletű nyelv kell - és nem megy egy pillanat alatt... Janoszen példája jó, csak pl. az Ember-t is az Élőlények->Emlősök->Emberszabásúak sorban (osztályokból) kéne örökíteni... (Egyáltalán nem rossz a példa(!), csak azt akarom szemléltetni: nagyon-nagyon összetett - és bonyolult - szabályrendszert is szokás alkalmazni OOP-ben.)
12

szerintem meg rossz példa,

atomjani · 2013. Dec. 19. (Cs), 00.05
szerintem meg rossz példa, mert ilyet soha az életbe nem fog írni. Hány olyan weboldal van, ahol ez az emberes vagy állatos dolog van megvalosítva OOP-ben?
Jobb példa például az, hogy van egy weboldal, annak oldal. Van olyan része, ami mindenhol megvan. Sok tulajfonsága van. Ne csak kinézetben gondolkodjunk. Tud mondjuk olyat, hogy kezeli a felhasználót, hogy most vendég vagy be van jelentkezve vagy admin. De van mondjuk az adatlapom oldal, ahol felül van picit definiálva. Lehet, hogy a többi oldalt mindenki láthatta, ezt meg csak a regisztrált és belépett felhasználók. Egy másik oldalon mondjuk maga a blog van. A kezdőlapon meg egy leírás. Mindegyik oldalban van valami közös, ugyanakkor mindegyik másmilyen. Lehet, hogy mindegyiknél van középen a $content tartalom, melyek minden oldalnál más értékekkel rendelkezik.
13

Elmélet vs gyakorlat

Pepita · 2013. Dec. 19. (Cs), 01.20
Elméleti tudást sokkal nehezebb gyakorlati alkalmazása révén megtanulni (ha egyáltalán lehetséges), mint megszerzett elméleti tudást a gyakorlatban alkalmazni. Sajnos webbel foglalkozók közt ez egy elterjedt nézet: csinálj egy weboldalt, aztán tanulj a hibáiból...
OOP-t így nem lehet elsajátítani, csak imitálni, mintha értenél hozzá. Nem ugyanaz. Viszont kísértetiesen hasonlít ahhoz a számtalan esethez, mikor egy szépnek mondható design mögött hulladék backend van...
15

Szerintem az OOP nagyon szép

atomjani · 2013. Dec. 19. (Cs), 19.30
Szerintem az OOP nagyon szép dolog, mint a függvények használata is. A baj szerintem ott van, hogy nem a legjobb, nem a legteljesebb módon tanuljuk meg. Ma néztem egy videót például a függvények használatáról és elég szemléletesen van bemutatva. Szóval nagyon is jól lehetett érteni, mert nagyon jól magyarázták meg, nagyon jó valós helyzetekben alkalmazott példákat mutattak be. És szerintem még lehetett volna rárakni pár lapáttal, hogy teljes legyen a kép.
Tudod, hogy hogyan magyarázták el a suliban a C++ órán az OOP-ét? Egyszer lenyomták az elméletet és valami robot mozgását kellett megcsinálnunk. Vajon hány programban szerepel robot a mozgásával? Soha nem láttam olyan egyszerű és könnyen érthető példákat, amiket nap mint nap alkalmaznak a C++ programozók. Pedig mi máson lehetne megérteni jobban az elméletet gyakorlati szinten, ha nem ilyen valós gyakori példákon? Oké, robot működik ezzel. És aztán? Szóval érted a problémát.
Miközben a mai videóban megmutatták egy függvénnyel, hogy van egy "hiba" nevű függvény és az belül szépen ki van csinosítva. Amikor meg külön meghívjuk a függvényt egy argumentummal, akkor érzékelhető, hogy milyen előnyei vannak és hogyan lehet kihasználni.
Maga a szemléletet elsajátítani nem könnyű.
Sajnos igazad lehet abban is, hogy elküldik az embert és jöjjön rá saját maga a dolgokra. Ez azonban nem mindig jön össze.
16

Ezt nem mondtam

Pepita · 2013. Dec. 19. (Cs), 20.55
Sajnos igazad lehet abban is, hogy elküldik az embert és jöjjön rá saját maga a dolgokra.
Ilyet nem mondtam és nem is értem, mire gondolsz: ki küld el kit és hova?

Pont azért jók elmélet tanulására a nem valós példák, mert ezeken keresztül bármit be lehet mutatni az elméletből, míg gyakorlati példákon keresztül csak azt, ami az adott példában hasznos.

Tévhit az, hogy szerezz gyakorlatot, aztán próbálj elméletet tanulni hozzá. Addigra már egy csomó mindent nem- vagy rosszul gondolsz, amiket fontos jól tudni.

Ahhoz, hogy ezt jobban el tudjam magyarázni, szerintem tanárnak kéne legyek, úgyhogy bocsi, de érd be ennyivel. Nem tudom ennél pontosabban leírni, de a lényeg szerintem érthető. Az elmélet az nem gyakorlat, és egyirányú utca van a kettő közt: gyakorlatból nem lesz elméleti tudás, pont.
17

Az elméletet nem lehet

atomjani · 2013. Dec. 19. (Cs), 23.58
Az elméletet nem lehet semmivel sem helyettesíteni. Lehet, hogy átfogó példát is használnak, ami tényleg csak az elmélet megértéséhez kell. De azért szerintem kell olyan gyakorlatias példa is, amit nap mint nap használunk. Azért, hogy az ember agya kezdjen átállni arra, hogy na mit is lehet programozás közben így megoldani. Fogalmazhatjuk úgy is, hogy az az elmélet és az a szemléltetésnek kitalált példa édes kevés. Szerintem.
19

Így már sokkal helyesebb

Pepita · 2013. Dec. 20. (P), 17.34
Az elméletet nem lehet semmivel sem helyettesíteni.
Ez pont 100%-ban igaz.

Szemléltető példát kell alkalmazni, ami magát az elméletet mutatja jól be - ez szerintem sosem egy konkrét gyakorlati felhasználás.

Viszont az is igaz, hogy a megtanult / megértett elméletet alkalmazni is tudni kell: elmélet után jöhetnek a gyakorlati példák, ezek akár "élesek" is lehetnek - na nem rögtön az első...
De abban egyetértünk, hogy hasznos és kell a gyakorlat is, de nem azzal indítunk.
14

SOLID

Práger Ádám · 2013. Dec. 19. (Cs), 02.06
Amikor egy ilyen Login osztályból akar valaki OOPt tanulni, már régen rossz. Az OOP tanuálsa együtt kell hogy történjen a SOLIDdal, a learning curve kissé meredekebb, de úgy lehet igazán megérteni.
18

Ez a kód talán túl bonyolult

atomjani · 2013. Dec. 20. (P), 00.01
Ez a kód talán túl bonyolult is a megértéséhez. De aki elméleti tudás nélkül akarja ezt megérteni, az elég mazochista alkatú. Mert hát ha valaki sokáig nézi a kódot és talál benne rendszereséget, az valamit meg is tanul. De még ebben az esetben is sok kódot kéne megnéznie.
20

Mi lenne ha a függvényekkel

atomjani · 2013. Dec. 21. (Szo), 16.34
Mi lenne ha a függvényekkel kezdenéd? Írj egyszerűeket, kísérletezz hogy mit hogyan lehet. A függvény sem állhat annyira távol az objektumorrientált programozástól. Talán picit könnyebb és feljutsz vele olyan szintre, hogy az OOP-ét is könnyebben el tudod sajátítani.
A függvény lényege is annyi, hogy nem kell minden alkalommal 20-30 sort írni, hanem egy sorral meghívod bizonyos feltételekkel, értékadással és elvégzi az egész műveletet. Amíg ezt nem tapasztalod meg, addig max csak ciklusokban tudsz szerintem gondolkodni. Ha viszont elsajátítod és használsz saját magad készített függvényeket, akkor mélyebb megértésre tehetsz szert.
Nekem is nyomatták nagyon az OOP-ét. De tényleg muszáj ezt ilyen korán annyira erőltetni? Majd a profik megmondják, hogy mennyire van nagy szükség OOP-re és milyen gyakorisággal használták eddig. Én mégcsak a függvényeknél tartok, ennek a megértésével, gyakorlásával és használatával is bőven el leszek egy darabig.
21

+1

tgr · 2013. Dec. 21. (Szo), 23.04
+1, amíg egy foreach vagy egy return zavarba hoz, ne akarj OOP-t tanulni. Matematikából is előbb összeadni tanul meg az ember, és csak utána integrálni, a programozásban is van egy normális sorrendje a dolgoknak.
23

Szerintem

Pepita · 2013. Dec. 21. (Szo), 23.28
Pallosi Péter rég túl van a procedurális programozáson, ami persze sorrendiségben OK, de semmi köze OOP-hez.
24

Hát ebből a

tgr · 2013. Dec. 22. (V), 15.49
Hát ebből a nemtudommitjelent-halmazból nem ez jön át.
25

Korábbi fórumtémái

Pepita · 2013. Dec. 22. (V), 20.37
alapján gondolom, de emlékezetből... Rémlik, hogy sok tanuló próbálkozása volt, mielőtt egyetemre ment, azt is itt kérdezte, hogy hova érdemes mennie. Szóval nem ez az első PHP-próbálkozása, de lehet, hogy nem magától, egyedül kéne OOP "rejtelmeibe" mennie. Kérdés, hogy van-e jó tanára és elég türelme hozzá. Én bízom benne.
22

Köze sincs hozzá

Pepita · 2013. Dec. 21. (Szo), 23.26
Kicsit keresgélj, nem olyan rég Hídvégi Gábor hősiesen kiállt a procedurális programozás mellett az OOP ellenében...

Szóval igenis, a kettő nagy különbség, ha procedurálisan programozol, pont azokat a dolgokat nem használod (ki), amiktől OOP az OOP.

A függvény sem állhat annyira távol az objektumorrientált programozástól.
Annyiban nem, hogy általában OOP-ben is vannak függvények. De ezek szerint, ha megtanulsz búzát lisztté őrölni, akkor félig megtanultad a kenyérsütést? Mert ahhoz is kell liszt? Ez nem indok, ugyanolyan messze van az OOP-től, mint előtte. Nincs a fv-nek "gazdaobjektuma", nem öröklődik, nincsenek tulajdonságok, etc.

A függvény lényege is annyi, hogy nem kell minden alkalommal 20-30 sort írni...
Az OOP-é pedig nagyságrendekkel több...

Én mégcsak a függvényeknél tartok, ennek a megértésével, gyakorlásával és használatával is bőven el leszek egy darabig.
Ezt jó, hogy leírtad, és ne haragudj, de ezzel kellett volna kezdened. Ez nem szégyen egyáltalán, de akkor vagy ne adj tanácsot OOP elsajátítására, vagy emeld ki a legelején, hogy ezt te így gondolod, de nem tudod biztosan.

Személyes tapasztalat: OOP-t leginkább egy nagyon jó tanártól jó tanulni. Mindegy milyen nyelven, ha egyszer (akár "kínaiul") megértetted, nem fog többet gondot okozni más nyelveken sem (már önállóan), esetleg js lehet kicsit gond, de talán nem olyan nagy.
Én elsőre kiszenvedtem nagyon jó könyvekből, de maradtak bent lyukak is, évekkel később hozott össze a sors jó tanárral, aki már másik nyelvet (Java) tanított nekem (eredetileg "nagy" Delphi-s voltam), és valójában csak ekkor került minden a helyére.
És a mai napig sokat gondolkodom, hogy mikor csináljak valaminek már külön osztályt, ez az a része, ami már erősen fejlesztőfüggő (érdemes volna engem inf3rnoval "összemérni", neki ugyanaz a feladat min. mondjuk 10x annyi osztály, akkor is, ha mindketten jól csináljuk), nagyon széles skálán lehet jól csinálni. Rosszul meg pláne... :)
26

Nézegettem OOP programozásra

atomjani · 2013. Dec. 26. (Cs), 10.17
Nézegettem OOP programozásra is videót és a függvények használata szerintem sokkal egyszerűbb, csináltam is már pár függvényt. OOP használatára nagyobb megértés kell.
OOP-ét elméleti síkon értem valamilyen szinten, a rá adott példát is kezdtem elég jól megérteni. De hogy használni is tudom rendesen, arról nem vagyok meggyőződve.
Amikor írtam, akkor még nem készítettem függvényeket és nem alkalmaztam. Igen, én így gondoltam akkor is a dolgokat, ami most sem változott. Ettől persze tévedhetek.
27

Valameddig

Pepita · 2013. Dec. 26. (Cs), 11.48
Nézegettem OOP programozásra is videót és a függvények használata szerintem sokkal egyszerűbb
Ez addig így van, amíg nem kezdesz pl. MVC-ben gondolkodni. A fv-tár használata tényleg egyszerű, akkor van gond, ha felmerül a láthatóság kérdése (ne lehessen minden fv-t, változót mindenhonnan elérni) és pl. nem szeretnél minden adatot eljuttatni már a HTML kimenetet "gyártó" részhez (view réteg).
Nagyon egyszerű honlapoknál még elfér, de ha egyszer megbarátkozol az OOP-vel MVC alkalmazásban, onnantól kezdve le sem teszed, annyi kényelmi funkcióval (védelemmel) bővül a tudásod. Erre jók a valóban jó keretrendszerek, amiket akár saját szájízed szerint továbbfejleszthetsz. Ne félj tőle, ez az idő is el fog jönni, ha nem, akkor valószínűleg más pályát választasz.
Sokkal kényelmesebb így programozni, ha már belejöttél, persze mindenkinek a maga tudását magának kell megszereznie.