Autor Zpráva
TomasJ
Profil
Ahoj.
Po delší době jsem opět začal s OOP (už jsem jednou začínal, ale nějak jsem se na to vykašlal).
Udělal jsem si pro začátek 2 třídy. Převádím postupně kód s klasickými (jestli správně nazývám - procedurálními) funkcemi, na třídy, prostě OOP. Jedná se o funkční chat, jen je v něm nepořádek, a myslím, že OOP soubor výrazně zkrátí, a vyhnu se zbytečnému načítání něčeho co zrovna potřebovat nebudu. Poprosil bych o překontrolování odborníky - jestli je dobře navrhnutý, jak jej případně napravit, prostě jestli takto můžu postupovat dále. Ještě prosím, vyhněte se (pokud můžete) odbornému popisování. Začínám, a pořádně ty odborné názvy "toho a toho" neznám. Děkuji, tady je můj kód:
<?php
class Login{
  protected $ip,
            $alvl,
            $mail,
            $nick,
            $accID,
            $chat_time;

  public function __construct(){
    throw new exception("Pristup k tride ".get_class($this)." byl odmitnut.");
  }

  protected function login($userData){
    $this->ip         = $_SERVER['REMOTE_ADDR'];
    $this->alvl       = $userData[4];
    $this->mail       = $userData[3];
    $this->nick       = $userData[0];
    $this->accID      = $userData[2];
    $this->chat_time  = time();
  }
}

class Chat extends Login{
  public function __construct($userData){
    if(!is_array($userData)) throw new exception("Data nejsou typu Pole!");
    if(count($userData)!=5 || in_array("",$userData)) throw new exception("Nektera data nebyla vyplnena.");
    $this->login($userData);
  }
  public function GetData(){
    echo "Nick: {$this->nick}| AccountID: {$this->accID}| E-mail: {$this->mail}| Admin level: {$this->alvl}| IP: {$this->ip}| Loaded: {$this->chat_time}";
  }
}

try{
  $chat = new Chat(Array("nick","password","accountID","email","0"));
  $chat->GetData();
}
catch(exception $err){
  echo "Chyba: ".$err->getMessage();
}
?>
Třída Chat by měla vytvořit objekt, přes který pak budu všechny úkony provádět (Přidání nového uživatele, smazání odcházejícího, výpis zprávy...).
Třídu Login mám pouze pro přihlášení a chci aby šla zavolat pouze z nějaké třídy (momentálně třída Chat) a jen při vytvoření nové instance.
WertriK
Profil
Ahoj Tome, dřív než na detailní strukturu tříd tě upozorním na samotné třídy.
Pokud chceš zatím s OOP je dobré si nejdřív uvědomit že se díváš na objekty, jenž mají nějaké vlastnosti a funkce.

Pokud chceš dělat chat, první co by tě mělo trknout je, že tam bude nějaký uživatel.
User bude moci
- registrovat se, přihlásit se, odhlásit, změnit údaje atd.

Dále tam budou figurovat jednotlivé posty v tom chatu.
Třida Message
- čas, od uživatele, (pro uživatele), text atd.

Potom nějaká třída která to dá dohromady třeba chat.

Třeba ti pomůže i stařičké vlákno, kde je rozebráno tvorba knihy náštěv v OOP.
OOP
TomasJ
Profil
No ono to je bez přihlášení a registrace (registrace je na herním serveru), samotný chat (skupinový) - "všichni se všema".
Tohle je zatím začátek. Vše jde přes UDP server, propojené s jedním herním serverem, takže ono tam zas těch informací moc nebude no...
A za odkaz děkuji, určitě se mi hodí! :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: