Új hozzászólás Aktív témák
-
cucka
addikt
Az include_once() beilleszt és feldolgoz fájlokat a program futása közben.
Apró pontosítás: nem a futás közben dolgozza fel, hanem előtte. A php-ban van preprocessor, ami összeszerkeszti a kódot (az include-olt fileokat egyszerűen bemásolja a megfelelő helyre), majd alap szintaktikai vizsgálatot is végez.amugy szerintem jobb az or die alkalmazása....kevesebb a kód de csak ugy mondtam
Szerintem ez a rövidített megoldás nem túl szép (amúgy az or mellett az and is használható ehhez analóg módon, szerencsére nem túl elterjedt). Másrészt normális szoftvernél a hibákat egy hibakezelő kapja el, tehát a kódban egyetlen die() sincs. -
cucka
addikt
válasz ArchElf #5364 üzenetére
Van az or meg az and, amelyek logikai operátorok, de ugyanezek használhatók vezérlési szerkezetként is.
Te a logikai operátorokról beszélsz, azokkal semmi baj. Mellesleg az általad írt kiértékelést lusta kiértékelésnek szokás hívni. A PHP a logikai operátoroknál mindig lusta kiértékelést használ, a mohó kiértékelés a legtöbb esetben megoldható bináris és/vagy operátorokkal.
Amiről én beszélek, az az if-el ekvivalens vezérlési szerkezetek. A következő két kód ekvivalens.
Első:
fgv1() and fgv2();
fgv1() or fgv2();Második:
if (fgv1()) fgv2();
if (!fgv1()) fgv2();Sőt, ezekből többet is össze lehet fűzni. A példa kódokban sokszor használt mysql_query(..) or die(); szerkezet pontosan ilyen vezérlési szerkezet.
-
cucka
addikt
válasz TonTomika #5367 üzenetére
Például használhatod az explode() függvényt arra, hogy a sort a *-ok mentén szétbontsa, eredményül egy tömböt ad. Próbáld ki ezt a kódot, innen látni fogod, hogy milyen eredményt ad, ezzel lehet tovább dolgozni.
while ($line=fgets($file)){
$line_arr=explode('*', $line);
print '<pre>'.print_r($line, true).'</pre><br />';
} -
cucka
addikt
Php-ban bele lehet futni hasonló furcsaságokba, köszönhetően a típusrendszern és az ellenőrző függvények furcsaságainak. Pár hasznos tudnivaló.
Először is: a php-ban minden változónak van valamilyen típusa.
A null az egy érték és egy speciális típus is, tehát ha egy változó értéke null, akkor a típusa is null lesz. A korábban nem deklarált változók értéke (és típusa is) null, ugyanez igaz akkor, ha egy tömb nemlétező indexére hivatkozol.
A == és a === közötti különbség, hogy az előbbinél a php a megfelelő típusúra cast-olja az operandusokat, utóbbinál nem cast-ol, hanem ellenőrzi az operandusok típusát. Ezért van az, hogy egy null értékű változó és egy nem deklarált változó egyenlő lesz mindkét egyenlőségvizsgálat esetén.
Az automata cast-olással szintén érdemes vigyázni, lásd a köv. kód, ami azt fogja kiírni, hogy 102:
print ('100 forintnak 50 a fele' +2);Az is_int (is_null, stb.) függvények a paraméterként adott kifejezés típusát ellenőrzik, semmi mást. Például lásd a köv. kifejezéseket, melléjük írtam a kif. eredményét.
(true==is_int(3)) //IGAZ
(true==is_int('3')) //HAMIS
(true==is_int('3'+0)) //IGAZ
A POST-olt adatok mindig stringként érkeznek, tehát az is_int nem igazán jó ellenőrzésnek. Helyette használható az is_numeric(), ami stringként megadott számokra is az elvárásoknak megfelelő eredményt adja. Az is_int(null) minden esetben false-al tér vissza (mivel a null típus és az int típus különbözőek).Az empty() függvény megint érdekes, először is azért, mert nem függvény, nem is viselkedik függvényként. Kizárólag változót lehet neki paraméterként megadni. Az empty igazzal fog visszatérni, ha a paraméterének értéke null, 0, '0', üres string vagy üres tömb. Ezek közül a problémát a '0' érték jelenti, ami egyértelműen egy nem üres string
A fentiek mellett használható még az isset() is, ami szintén nem függvény és csak változó paraméterrel működik. Az isset akkor ad vissza true értéket, ha a paraméterként kapott változó korábban deklarálva volt és az értéke nem null.
Php-ban nagyjából ezek az eszközök vannak erre a feladatra, remélem sikerült újat is mondanom.
[ Szerkesztve ]
-
cucka
addikt
A problémára igazán értelmes megoldás nincs, a mysql-ben a limit pontosan annyit tud, ami elsőre is látszik.
Esetleg lehet próbálkozni nem túl elegáns és gyors dupla select-es megoldással:select * from (select * from tablanev order by mezonev desc limit 10) tbl_alias order by mezonev asc;
-
cucka
addikt
az a baj, az array_reverse a query eredményét nem rendezi vissza, vagy nem jól írom
Hát a kódodban nem írod sehol . Ha a kódod után beszúrsz egy
$vissza_tomb=array_reverse($vissza_tomb);
sort, akkor annak működnie kéne.tényleg nincs utolsó X sor fordított sorrendben?
Mysql-ben tényleg nincs.előbb kérjem le a sorok számát, és az -X legyen a start, vége X? ez nem túl elegáns
Ez is jó megoldás, vagy ott a dupla select, amit korábban írtam. Ez van. -
cucka
addikt
Nem igazán értem, hogy mit szeretnél. Az array_reverse alapesetben meghívva eldobja a kulcsokat és 0-tól újraindexeli a tömböt. Ha a második, opcionális paraméterét true-ra állítod, akkor pedig megtartja a kulcsokat - neked szerintem az első változatra van szükséged.
Ha pedig tudod előre, hogy hány elemed lesz, akkor a ciklusban array_push() helyett simán rakd be a megfelelő helyre az aktuális elemet és nem kell fordítgatni a tömböt.
[ Szerkesztve ]
-
cucka
addikt
válasz Speeedfire #5680 üzenetére
Feltételezem UTF8-as kódolású a szöveg, ez esetben a strlen() helyett használd az mb_strlen() függvényt.
(A probléma oka, hogy a strlen csak azokra a karakterkódolásokra működik jól, ahol 1 karaktert 1 byte-on tárolnak, utf8-nál viszont bizonyos karakterek több byte-on vannak tárolva. Az mb előtag is erre utal, a multibyte szó rövidítése) -
cucka
addikt
válasz Brown ügynök #5749 üzenetére
$db=&JFactory::getDBO();
Namost az is lehet, hogy én maradtam le valamilyen php fícsörről, de a JFactory osztály neve előtti & jelet pontosan miért is írtad oda? -
cucka
addikt
válasz Tele von Zsinór #5751 üzenetére
Jaoké, azt nem tudtam, hogy ilyenkor a php4 másolatot készített az objektumokról. Ma is tanultam valamit
[ Szerkesztve ]
-
cucka
addikt
válasz Sk8erPeter #6491 üzenetére
Ez a fenti ilyenformán jól működik, mégis felmerült bennem, hogy tulajdonképpen melyik a gyorsabb, az, ha Apache-csal vagy PHP-vel dolgozom fel a címet?
Elég gyors bárhogy. Ha gyorsítani akarsz a kódodon, akkor a bottleneck-eket kell megkeresni, ilyen kaliberű dolgokkal fölöslegesen pocsékolod az időd. Kit érdekel, hogy 0.02 ms alatt futtatja le a regexp-et, vagy 0.03?Ti hogy látjátok a kérdést? Másképp használjátok, vagy muszáj elfogadni, hogy ez egy viszonylag kötött szerkezet, jól kell kitalálni az elején, és nem érdemes változtatni rajta később?
Fel lehet php-ból is dolgozni az url-t, ez valamivel rugalmasabb megoldás, de értelemszerűen a korábban könyvjelzőzött url-ek változására nem ad ez sem megoldást. A barátságos url-ek egyébként a keresőmotornak szólnak, nem pedig a felhasználónak, tehát szerintem egyszer elég jól kitalálni és utána nem piszkálni.Több RewriteRule-t hogyan adtok hozzá úgy, hogy helyesen működjön?
A RewriteRule-ok alapból így működnek. Fentről lefele halad a .htaccess fileban egészen addig, amíg talál egy megfelelő sort, ami alapján átírja az url-t. (Ennél jóval bonyolultabb amúgy, vannak feltételek, meg igazából ha talált egy jó RewriteRule-t, akkor nem áll le a feldolgozás, de nem akarok hülyeséget írni, szóval nézz utána ) -
cucka
addikt
válasz RedSign #6503 üzenetére
Ezt a feladatot azért nem így illik megoldani. A header() hívásod helyére inkább valami hasonlót érdemes beilleszteni.
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
header("Content-type: image/jpeg");
fpassthru($img_folder . $image); -
cucka
addikt
válasz Alukard #6580 üzenetére
Például így:
select date_format(datum_mezo_neve, "%m") from tabla_neve;A fenti lekérdezés a hónapot fogja kiszedni a dátumból. A date_format dokumentációjában megtalálod az összes lehetséges értéket, amit a format string-be írhatsz. (A format string aza "%m" jelen esetben)
[ Szerkesztve ]
-
cucka
addikt
válasz Alukard #6582 üzenetére
Valahogy így:
select *, date(annDate) as ujmezoneve from ...Itt a date() függvény van, ami visszaadja a dátumot szabványos formátumban (Y-m-d). Ha valamilyen egyéni formátumban szeretnéd, akkor date() helyett használd a korábban mutatott date_format() függvényt.
(Egyébként a tábláidat miért nevezgeted át a, b és c-nek? Sok értelme nincs, azon túl, hogy átláthatalanabb lesz tőle a lekérdezésed.)[ Szerkesztve ]
-
cucka
addikt
válasz Brown ügynök #6604 üzenetére
Mi a kérdéses oldal címe (vagyis az url-je) és mi található a $uri változóban?
A $_GET['id']-ben csak akkor fogod megtalálni a keresett értéket, ha az url-ben van egy id nevű paraméter. (pl. oldalneve.hu?id=1 ) -
cucka
addikt
Valakinek esetleg van ötlete, hogy Budapesten egy multinál mennyit keres egy senior php fejlesztő?
[ Szerkesztve ]
-
cucka
addikt
Az mx rekord a lanten.hu-hoz létezik, ezt sok helyen meg tudod nézni, pl. [link]
Phpmailer-el pedig tudsz küldeni simán (php mail-el) és smtp-vel is levelet. Az smtp-s levélküldésnél pontosan ugyanúgy be fog lépni az smtp szerverre a phpmailer, mint ahogy egy átlag levelezőprogram belép, amikor küldesz vele valamit. Ha megnézed a phpmailer kódját, a "PROPERTIES FOR SMTP "-re keress rá, ott lesz szépen dokumentálva az összes paraméter, amit az smtp-s levélküldéshez be lehet állítani. (Nem mindegyiket kell piszkálni, de nyilván hostnév vagy belépési adatok nélkül nem fog semmit küldeni sehova )
-
cucka
addikt
De nem gáz ez, hogy ott van kódolatlanul?
Igen, gáz, ugyanakkor nem azA php file-t kívülről nem lehet elérni, mert a webszerver tudja, hogy az egy php file, így nem a php programkódot fogja visszaadni a felhasználónak, hanem lefuttatja php-val, és amit az kiír a standard kimenetre, na az megy a júzernek. Tehát nem gáz, hogy ott van kódolatlanul, valószínűleg egy másik file-ban az adatbázis jelszavad is ott lesz kódolatlanul
Annyiban gáz, hogy ha valaki hozzáfér a honlaphoz tartozó file-okhoz (pl. valahogy megszerzi az ftp jelszavadat), akkor látni fogja a jelszót is, bár ez esetben úgyis megette a fene az egészet, tehát szerintem ezen ne parázz
-
cucka
addikt
A php modult úgy lehet kiütni, ha szerkesztik az apache httpd.conf-ját, amihez általában root jog szükséges. Namost ha a hekker képes root joggal szerkesztgetni a szerveren a file-okat, akkor gyakorlatilag bármit megcsinálhat a gépen, tehát megette a fene az egészet.
Persze, ha tudsz valamilyen exploit-ról, amivel ezt el lehet érni root shell nélkül, akkor arra nagyon kíváncsi vagyok.
-
cucka
addikt
válasz Alukard #6662 üzenetére
a lényeg, hogy egy olyan megoldást keresek aminek a segítségével adatbázisból ki lehet szedni és megjeleníteni egy többszintes menüt, úgy, hogy minden a helyén is van...
Miért nem írod meg magadnak? Gyakorlatilag egy fát kell felépíts, majd írni egy függvényt, ami rekurzívan végigszalad rajta, ez fogja kiírni a menüt. Persze, ha gyorsan kell és nem szeretnél php programozással foglalkozni, akkor felejtős, egyébként viszont megéri egyszer jól megcsinálni, ez pont egy olyan feladat, amire lehet újrafelhasználható kódot írni és mellette viszonylag érdekes is . -
cucka
addikt
válasz Sk8erPeter #6669 üzenetére
Amúgy ez fura, azt nézem, hogy a PHPMailer osztályban (5.1) egyáltalán nincs is ellenőrzés arra vonatkozóan, hogy a felhasználó nem cseszte-e el a karakterkódolás bepötyögését
Belefér, ez nem olyan nagy baj.persze nem csak erről szól az OOP, de ha már lehet, egy helyen megvalósítjuk a változók beállításának megfelelő ellenőrzését is - egyből a beállításkor
Igen, meg lehet oldani, gondolom nem akarták felsorolni az összes lehetséges encoding típust és azok variációit (utf8 vs. utf-8). A karakterkódolás csak egy string, amit a levél header részébe illeszt a phpmailer, ezért nincs ellenőrzés.miért férek hozzá kívülről az ErrorInfo-hoz?
Errorinfo protected (v. private) kéne legyen és kéne mellé írni egy getErrorInfo()-t. Vagy maradhat public, de akkor a __set-ben le kell kezelni azt az esetet, amikor kívülről piszkálják. (Egyébként simán elképzelhető, hogy le van kezelve, csak elkerülte a figyelmedet, nincs előttem a phpmailer forrása)Lehet, hogy a függvénybe ugrálásnak nagyobb az overheadje
Igen, de annyira azért nem nagy. (Az overhead-et az adja, hogy létre kell jöjjön a call stack, ami a függvény hívása után fel kell szabaduljon)Egyébként gondolom Te is így példányosítod a PHPMailert:
Igen, de az én kivételeim nem jelennek meg a képernyőn, hanem kapok róluk szépen formázott emailt (és ugyanez igaz a hibákra is)[ Szerkesztve ]
-
cucka
addikt
válasz Sk8erPeter #6672 üzenetére
És én szerinted mit mondtam? Ugyanezt.
Oké, figyelmetlen voltam, bocsánatMert néztem a forráskódot, és TUDOM, hogy nincs lekezelve...
Csak ötlet volt, írtam, hogy nem volt előttem a forráskód. Amúgy simán lehet, hogy egyszerűen csak szar a phpmailer forrása. Ingyenes szoftver, szóval nincs kinél reklamálni.Ez attól még nem mond ellent annak, hogy elegánsabb, ha kivételt dobál az osztály, és azt a megfelelő helyen elkapjuk, mintha kiszednénk a publikus ErrorInfo stringből a hibát, ha a Send false-szal tér vissza...
Attól függ, hogy mire használod egy adott projektben a kivételeket. Lehet vezérlési struktúraként is használni, meg lehet tényleg csak akkor elővenni őket, ha fatális módon elhányja magát a kód. Feltételezem, ezért opcionális a kivételek dobálása a phpmailer-nél. -
cucka
addikt
válasz Alukard #6681 üzenetére
A kódod lényegében így néz ki:
if (valamilyen feltétel){
létrehozom a connection változót
} else {
használom a connection változót
}A notice-t az else ágban kapod, ahol szeretnéd használni azt a változót, amit az if egy másik ágában hoznál létre (de oda be se lép a programod, ugye, ezért a feltételes mód). A javaslat, hogy a mysql_connect-et hozd ki az if elé.
[ Szerkesztve ]
-
cucka
addikt
válasz PazsitZ #6683 üzenetére
A függvény ha jól látom, azt csinálja, hogy kapcsolódik egy adatbázishoz, tehát a hozzászólásoddal ellentétben nem az a feladata, hogy kezelje egy korábbi $connection változót, hanem hogy létrehozzon egyet.
Ilyen esetben a jó megoldás, hogy a függvény visszatér a létrejött kapcsolat resource-ával, vagy false-al, ha nem sikerült neki. Vagyis parasztosan: a végére kell egy return $connection sor -
cucka
addikt
válasz fordfairlane #6685 üzenetére
Igazából az egész koncepció rossz, mármint hogy egy függvény kezeli a connect-et és a disconnect-et is. Ha normálisan kéne megírni, akkor erre két függvény kell:
function db_connect($host, $user, $pass); - ez visszatér a connection resource-al
function db_disconnect($conn_res); - ez pedig lekapcsolódik -
cucka
addikt
válasz fordfairlane #6828 üzenetére
Szerintem meg ki vannak kapcsolva a warning-ok (nagyon helyesen )
-
cucka
addikt
Az flock() pontosan arra jó, amit a php manual-ban ír: kér az operációs rendszertől egy lock-ot egy file-ra, magyarul zárolja. Hacsak nem vagy benne biztos, hogy erre szükséged van, akkor valószínűleg nincs szükséged rá.
A netbeans pedig nem fogja lefordítani a php-t, mint ahogy más sem, mert ez egy interpretált nyelv.
-
cucka
addikt
Egy kis saját keretrendszert készítek és született az alábbi elgondolás.
Ne készíts saját keretrendszertMinden bizonnyal lassítja a futást, de egyszerűsíti a munkát. Szerintetek érdemes ezt így használni?
Nem érdemes. Ha már keretrendszert készítesz és szeretnél egy szuperglobál osztályt készíteni ahhoz, hogy biztonságosan kezeld a user inputot, akkor
- legyen egy osztályod, ami általánosan meg tudja oldani a feladatot akármilyen tömbre
- a program indulásánál példányosítod az ősosztályt a szuperglobálokra
- az ilyen megoldás egyetlen előnyös oldala, hogy egy helyen le tudod kezelni azt, hogy a szerveren be van-e kapcsolva a magic_quotes_gpc, na pont ez hiányzik a kódból
- a PHP case insensitive függvénynevek esetén, de ha minőségi kódot szeretnél kiadni a kezeid közül, akkor erről a "fícsörről" nem veszel tudomást.
- mivel a PHP egyik alapvető funkciója, hogy implicit cast-ol (szinte) bármit bármivé, ezért ezt beépíteni az osztályodba teljesen fölösleges.Ennek az abstract static bohóckodásnak semmi értelme, gyakorlatilag amit írtál, az ekvivalens azzal, mint ha megírtál volna néhány globális függvényt, csak mellette ott van zajnak egy csomó OOP-s keyword.
[ Szerkesztve ]
-
cucka
addikt
Kicsit átírtam. Pár ökölszabály:
- a konstruktor azért van, hogy inicializálja az objektum változóit
- ha nem vagy benne biztos, hogy statikus adattagot/függvényt kell használj, akkor nem kell használd.class Superglobal{
protected $content = array();
protected $magic_quotes = false;
function __construct($sga){
$this->content = $sga;
$this->magic_quotes=get_magic_quotes_gpc();
}
function Get($key, $secure = false, $default = false, $remove_html = false, $remove_js =false){
if(isset($this->content[$key])){
$value=$this->content[$key];
if($this->magic_quotes)$value= stripslashes($value);
if($secure)$value = STRINGS::Secure($value, $remove_html, $remove_js);
return $value;
} else {
return $default;
}
}
}[ Szerkesztve ]
-
cucka
addikt
hanem egyszer beállítom és mindegyikre objektumra érvényes. Végső soron ezért vannak a statikus adattagok, vagy nem?
A lényeg, hogy ha az objektum be tudja állítani magának a konstruktorban, akkor ne kelljen kívülről beállítani.
Amúgy igen, lehet statikusnak is deklarálni ezt a változót, ez esetben mondjuk legyen null a kezdőértéke és a konstruktor csak akkor állítsa be az értékét, ha az null.Am így valóban jobb és szakszerűbb, bár sztem így több memóriát eszik
Többet nyersz a jó kóddal, mint azzal, ha spórolsz 3 byte memóriát.viszont a GET és POST nem minden elemén stripslashelek, hanem csak amelyik kell.
Ha be van kapcsolva a magic_quotes, akkor mindegyiken kell.Az megint egy kérdés, hogy egy elemet többször fölöslegesen is, amennyiben nem tárolom el egy változóban.
Ha egy elemre többször fut le a stripslashes, az nagy baj, mert módosítja magát az adatot is. A kódnak biztosítania kell, hogy csak egyszer fusson le. Például a kód, amit írtam/írtál, az biztosítja ezt. -
cucka
addikt
Vágom. Az első megoldást javaslom, mert
- nem kell nyilvántartani, hogy mire futott már le a stripslashes és mire nem
- ha valami ott van a REQUEST-ben, akkor az valószínűleg azért van ott, mert szükség van rá, használni szeretnéd valamire. Ha a REQUEST tele van szeméttel, akkor előbb azt kell megoldani, hogy ne legyen. -
cucka
addikt
a tömb elemei referencia nélkül is megmaradnak az éterben?
Természetesen ez esetben nem maradnak meg az éterben, jól is néznénk ki, ha ilyen memory leak-ekkel lenne tele a php.
A php-ben van garbage collector, ami folyamatosan figyeli a lefoglalt változókat (pontosabban zval-okat) és ha valamelyiknek a ref_count-ja nulla lesz, akkor felszabadítja a hozzá tartozó memóriát. Ha nagyon érdekel a téma, a php manual-ban le van írva részletesen [link][ Szerkesztve ]
-
cucka
addikt
válasz Alukard #6874 üzenetére
Sok függ attól, hogy milyen lekérdezéseket fogsz futtatni rajta és hogy hogyan indexeled, de általában véve 100ezer sornál kezdődnek a problémák.
(Persze, ha az olcsójános bt-nél van host-olva az alkalmazás, ahol beraktak egy asztali gépet a szerverterembe és azon fut egyszerre száz oldal meg az adatbázisuk, akkor nyilván szűkebb a mozgástér)
[ Szerkesztve ]
-
cucka
addikt
válasz Tele von Zsinór #6876 üzenetére
Javítsatok ki, ha rosszul tudom, de szerintem a mezők száma nem befolyásolja érdemben a sebességet.
-
cucka
addikt
Cucka mondta nékem, hogy statikus eljárásokat/függvényeket abstract osztályba rakni bohóckodás.
Most nem nézek utána, de szerintem azt írtam, hogy saját framework-öt írni a bohóckodás. (De ha mégsem, akkor erre gondoltam )Statikus függvényeket nem blaszfémia használni, egyszerűen csak ugye ezek lényege, hogy egy osztályra vonatkoznak, nem pedig az osztály egyes példányaira, így pontosan akkor kell őket használni, amikor pontosan erre van szükség - általában nincs. Kód vagy osztálydiagram nélkül nehéz okosakat mondani, esetleg megmutathatnád, hogy mit készülsz implementálni.
A statikus függvények másik jellemző felhasználása, amikor rengeteg segédfüggvényeked van (mondjuk egy framework-ben ez jellemző) és ezeket témakör szerint osztályokba rendezed úgy, hogy mindegyik statikus lesz. Tulajdonképpen globális függvényként használod őket. Ennek az előnye:
- ha megcsináltad rendesen az autoload()-ot, akkor az megoldja az include-okat erre is
- nem parse-oltatsz le fölöslegesen egy csomó kódot a php-val
- szép rendezett kódod lesz -
cucka
addikt
Egy gyors ránézés után egyértelmű, hogy nálad nem jött át, hogy mire jó az abstract osztály.
A kódod gyakorlatilag globális függvények halmaza, amiket egy osztályba tettél. Na ettől nem lett oop-s a kód.
Az absztrakt osztály lényege, hogy ez egy osztály, aminek néhány függvénye csak deklarálva van, de nincsenek definiálva (abstract függvények). Ez azt jelenti, hogy az osztály megmondja, hogy milyen pontosan függvényekre van szükség a működéséhez, de ezeket a függvényeket a leszármazottak kötelesek implementálni.
A fentiek alapján ki lehet jelenteni, hogy a te osztályod teljesen fölöslegesen használja az "abstract" kulcsszót, mert pont a lényeg hiányzik belőle.Amire neked ennél a session osztálynál szükséged lenne, az egy rendes példányosítható osztály, ami singleton (tehát egy időben csak egy példánya létezhet, nézz utána wikin, hogy hogyan és miért).
Az alkalmazásod indulásnál példányosítja a session osztályt, majd használja azt. Természetesen az osztály függvényei nem statikusak, mert annak semmi értelme nincs ebben az esetben.Szólj ha valami nem kerek
(Egyébként egy nem sértőnek szánt megjegyzés: sokkal jobban járnál, ha fognál egy komoly php-s framework-öt és elkezdenéd használni, illetve megpróbálnád megérteni, hogy hogy működik, mert nekem innen úgy tűnik, hogy azért van egy-két lyuk a tudásodban, amit be kéne foltozni ahhoz, hogy értelme legyen a saját framework írásának)
[ Szerkesztve ]
-
cucka
addikt
Egyébként ha már ennél a témánál vagyunk, megosztanék két fontos dolgot, amit néhány évnyi php framework fejlesztés alatt sikerült megtanulni és amiért nem javaslom senkinek, hogy különösebb indok nélkül belevágjon:
1. A saját framework soha nem készül el.
2. A saját framework soha nem lesz annyira jó, hogy elégedetten hátradőlhess.Természetesen hobbiból lehet keretrendszert fejleszteni, meg sok dolgot meg lehet tanulni ezáltal, a fentiek nem erre vonatkoznak.
[ Szerkesztve ]
-
cucka
addikt
Nem muszáj singleton-t használni, tulajdonképpen elsőre bőven jó egy olyan osztály, ami valóban oop-s és elvégzi a dolgát, az osztályt használó kód majd biztosítja azt, hogy csak 1 példány legyen belőle.
(A session amúgy is egy globális valami és egy darab van belőle)Itt találsz példát singleton osztályra.
-
cucka
addikt
A struktúra szerintem alapvetően jó így.
Egy apró megjegyzés: private adattagok/függvények helyett a legtöbb esetben érdemesebb protected-et használni. Kívülről nézve nincs különbség, származtatásnál viszont jellemző, hogy szeretnéd használni az ős osztály védett metódusait/adattagjait.
Mondjuk ez a session kezelés osztály pont olyan, ami nem hasonlít a legtöbb esetre. Ezt várhatóan nem fogod származtatni, így teljesen jó a private is. -
cucka
addikt
válasz Sk8erPeter #6899 üzenetére
Szerintem jól írtam
Az absztrakt osztály lényege, hogy ez egy osztály, aminek néhány függvénye csak deklarálva van, de nincsenek definiálva (abstract függvények)Egyébként jókat írsz. Egy kis kiegészítés:
Az abstract class és az interface között az alapető különbség nem az, hogy az egyikben lehetnek definiált függvények, a másikban pedig nem, hanem hogy az interface az egyetlen eszköz php-ban, amin működik a többszörös öröklődés. -
cucka
addikt
válasz Sk8erPeter #6903 üzenetére
Az is alapvető különbség, amit én írtam, mivel az interfész tulajdonképpen csak egy "mintát" ír elő, amit meg kell valósítani. Az absztrakt osztály sokszor ennél konkrétabb szerkezetet határoz meg.
Az interface lényeges tulajdonsága az, hogy támogatja a többszörös öröklődést, ez az oka annak, hogy berakták a nyelvbe. Ugye lehet írni kizárólag absztrakt függvényeket tartalmazó osztályt, tehát csak ezért nem lett volna értelme az interface-ek bevezetésének. -
cucka
addikt
-
cucka
addikt
válasz Forza_JUVE #6910 üzenetére
Hát rosszul írtad
Átirányíthatsz egy relatív útvonalra a szerveren. Példák:
header("Location: xy.html");
header("Location: /some_subdir/index.php?id=1&result=success");Vagy átirányíthasz egy külső oldalra, akkor viszont kell a http elé:
header("Location: http://www.google.com");Az átirányítás után a die() arra van, hogy a szkript maradék része ne fusson le.
A socket-es hibának ehhez nincs semmi köze. -
cucka
addikt
Mehet így is.
Igazából minél többet nézem a kód részleteket, amiket mutatsz, annál kevésbé világos, hogy ez a framework pontosan mit is fog tudni, hova akarsz eljutni? Tulajdonképpen ez (mármint hogy mit tud a framework, hogyan épül fel, stb.) első körben sokkal fontosabb annál, mint hogy most globális függvényként írod-e ezeket meg vagy egy osztály statikus függvényeiként.
Új hozzászólás Aktív témák
- iPhone topik
- Proxmox VE
- Amlogic S905, S912 processzoros készülékek
- Számtech boltosok memoárjai, azaz amikor kiborulunk...
- Luck Dragon: Asszociációs játék. :)
- Kihívás a középkategóriában: teszten a Radeon RX 7600 XT
- Milyen egeret válasszak?
- Digitális detox a Nokiától
- sziku69: Fűzzük össze a szavakat :)
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- További aktív témák...