Autor Zpráva
gruh54
Profil *
Mam funckciu na overenie spravnosti e-mailu, ktoru chcem vyuzit v mnohych classoch a porebujem ju tam includniut.
Ked dam normalne v class include, tak vypisuje chyby... preco?


Ja chcem aby ta funckia fungovala len v tej konkretnej class, mimo nej nemusi...

Da sa to?
Ssob
Profil
Musis to includnout jeste pred definici tridy.

Napr:

soubor xxx.class.php:
<?php
include_once 'funkce.php';
class xxx
{
   // .............
}
?>
suky
Profil
gruh54
Presne podobnou otazkou jsem zacinal vyuku OOP ja. Jelikoz jsem po case zjistil, ze byla naprosto zbytecna a ze jsem se mel radsi zeptat, jak se naucit OOP, tak ti na otazku neodpovim o odkazu te na muj seznam pramenu okolo OOP, ze kterych by ses mel, pokud o to mas zajem, naucit OOP. A az se ho naucis, nebudes potrebovat odpovedet na tuto otazku.

Radim dobre, vyber si jednodussi cestu vyuky OOP. (link)
gruh54
Profil *
A ktoru z tych knih si mam kupit? Na zaciatok by som skusil jednu. poradis?


A neodpovedal by si mi na tu otazku? Prosim.
suky
Profil
gruh54
1) Dobre na otazku ti odpovim, i kdyz vim z vlastni zkusenosti, ze zacinat tridou pro pristup do databaze (jak jsem z tvych dvou poslednich temat usoudil) je ten nejhorsi zacatek, na kterem se ale vsichni nauci, co OOP neni. Nehledej v tom spasu, vzdyt pripojeni do databaze (hadam, popripade to, k cemu ta tva trida slouzi) lze udelat i bez tridy. Ty jako vyvojar musis vedet, proc pouzivas OOP.

Je nekolik moznosti, jak ti na otazku odpoved, ale vsechny jsou zavisle na zadani. Tridy muzes oddedit od materske a volat ji pres rodice, nebo jak rikal Ssob, muzes pouzit klasickou funkci, dale muzes funkci zabalit do tridy a tu pak ji pres objekt zavolat v te tve tride. Naucenim OOP teprve poznas mezi resenimi rozdil.

2) Ono je zkusit jednu... Pokud se OOP chces opravdu naucit, jedna ti urcite stacit nebude. Pokud OOP nutne nepotrebujes znat, radsi se drz stareho zpusobu. Abys OOP mohl vyuzivat efektivne (a ne jak ho tu predhazujes...) tak toho musis prostudovat celkem dost. Nevaz se na PHP, nevaz se podle me (jak nekteri tvrdi) ani na jiny programovaci jazyk a zkus ho pochopit obecne.

Pro zacatek bych tedy doporucil P.1, ale ta knizka te nespasi, po jejim precteni urcite nebudes schopnej zasednout a v OOP naprogramovat aplikaci...
gruh54
Profil *
Ok,

ale da sa includnut funkcia, ktora pojde len v tej class? Da sa to?
srigi
Profil
Ja ti odporucam ak sa jedna o OOP, tento problem vyriesit pomocou dedicnosti
abstract class NejakaTrieda
{
  public function fnce_co_portebujem()
  {
    ...kod funkcie
  }
}

class TriedaKdePotrebujemFunkciu extends NejakaTrieda
{
  public function __construct()
    $this->fnce_co_portebujem()
  }
}

$objekt = new TriedaKdePotrebujemFunkciu();
Ak funkciu v triede nepotrebujes, nebudes ju vytvarat ako potomka NejakaTrieda(). Ak by sa naopak vyskytla potreba pridat vsetkym triedam novu funkciu, staci to doprogramovat iba v abstraktnej triede (na jedinom mieste). Tymto sposobom sa sprehladni kod.
suky
Profil
gruh54
Radim ti dobre, ver mi...
gruh54
Profil *
suky
Radim ti dobre, ver mi...

Ano, uz som objednal knizku o tych OOP zakladoch. Dufam, ze sa z toho naucim, lebo neviem si moc predstavit ci to budem chapat ak to nebude pisane pre PHP.
gruh54
Profil *
srigi

Neviem, ale ja si myslim, ze to je zbytocne takto riesit zlozito.
Jednoducho si predstav mam funkciu OverEmail, ktoru chcem includnut do class, napr. Komentare, Registracia, ... teoreticky to mozem do kazdej class nakopirovat, ale zda sa mi nechytre, pre pripad, kebyze to chcem zmenit.

Cudujem sa, ze klasicky include nechce zobrat, ale zrejme to ma svoje opodstatnenie, ktore este neviem, lebo som zaciatocnik.
suky
Profil
gruh54
ak to nebude pisane pre PHP.
Proto jsem psal, ze se OOP musi chapat obecne, nevazane na zadny jazyk. K tomu dalsimu se vyjadrovat radeji nebudu, mozna to casem pochopis.
srigi
Profil
gruh54 >> IMHO to nie je zlozite, skus tu abstratnu triedu niekedy pouzit a uvidis aky je to komfort. Na nejaky include() mozes potom pri vyuzivani __autoload() pekne zabudnut.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0