- Motorola Edge 50 Neo - az egyensúly gyengesége
- iPhone topik
- Samsung Galaxy S22 Ultra - na, kinél van toll?
- Samsung Galaxy S23 Ultra - non plus ultra
- Honor Magic7 Pro - kifinomult, költséges képalkotás
- Huawei Watch GT 3 Pro - korlátolt szépség
- Android szakmai topik
- Motorola Edge 30 Neo - wake up, Jr...
- Nem várt platformon a OnePlus Nord 5
- Redmi Note 12 Pro - nem tolták túl
Új hozzászólás Aktív témák
-
Peter Kiss
őstag
válasz
H.O.D. #13136 üzenetére
Mindkettő rossz. Active record-nak hívják, akárhogy is csinálod, ahol az entitásod egyben felel azért, hogy mentve legyen minden adott típusú elemed, illetve a lekérdezésért is ez felel. Az ilyen jellegű keveredések károsak.
Ha a legegyszerűbb értelmes megoldást szeretnéd, akkor kell
valami, ami kezeli a "tárhelyet" (adatbázis backend mellett ez jelenti az adatbázis-kapcsolatot, illetve a query-k végrehajtását),
valami, amivel le tudsz kérdezni, menteni tudsz (DAO),
és az entitásod (Product) -
cucka
addikt
válasz
H.O.D. #13136 üzenetére
Tehát egy statikus osztálynak nincs is __construct metódusa,
PHP-ban nincs olyan fogalom, hogy statikus osztály. Felejtsd el.
Minden osztálynak van __construct metódusa. Ha te nem írod meg, akkor a PHP csinál neki egy alapértelmezett üres metódust.Szerintem fogj egy PHP-s könyvet, ami az OOP-ra van kihegyezve, és olvasd el. Továbbra is ott tartunk, hogy írsz valami kódot, amiben vannak OOP-s kulcsszavak, de az egésznek semmi értelme OOP szemszögből.
Egy Product osztály az OOP irányból nézve nem a termékekkel kapcsolatos segédfüggvények gyűjteménye, hanem egy termék reprezentációja a kódodban. Egy Product objektumban tehát nincs getProduct() metódus, mert maga a Product objektum a termék. Az adattagok a termék adatai, a metódusok pedig a terméken végezhető műveletek. Ezt figyelembe véve a kérdésed blődség, teljesen irreleváns, hogy statikus vagy nem statikus az a metódus, aminek semmilyen keresnivalója nincs a termék osztályban.
Persze, biztos össze tudsz kalapálni szaktudás nélkül is valamit, ami úgy-ahogy működik és vannak benne OOP kulcsszavak, csak nem ez a jó irány.
-
fordfairlane
veterán
válasz
H.O.D. #13126 üzenetére
Értelmes fellelhető forrás hiányában arra gondoltam, ez megtörténik az osztály bármely metódusának/elemének használatakor.
Tudomásom szerint erre nincs beépített automatizmus, osztály használatakor nem történik ilyesfajta inicializálás. A konstruktor példányosításkor hívódik meg.
A PHP osztálybetöltő mechanizmusa viszont testreszabható, így megoldható egyfajta osztálybetöltő és inicializáló kódrész. Mondjuk ha __init-nek hívod, akkor valami ilyesmivel pl:
<?php
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.class.php';
if(is_callable($class, '__init')) {
$class->__init();
}
});
?> -
cucka
addikt
válasz
H.O.D. #13126 üzenetére
Statikus adattagot így tudsz inicializálni:
class Test{
static $data = 5;
}Nyoévám me, példányosítással, de akkor hogyan?
A statikus adattagok/metódusok az osztályhoz köthetők, nem az objektumpéldányhoz. Tehát pont az a lényeg, hogy függetlenek attól, hogy létrejön-e akár 1 példány abból az osztályból vagy sem.arra gondoltam, ez megtörténik az osztály bármely metódusának/elemének használatakor.
A statikus adattag akkor jön létre, amikor az osztály kódját értelmezi a php.
Ezt próbáld meg megérteni: a statikus adattag az lényegében egy globális változó. A trükk, hogy becsomagolod egy osztályba, az osztály nevén keresztül tudod elérni, így nem szennyezed a globális névteret. Egy osztály, ami csak statikus dolgokat tartalmaz, az lényegében nem egy osztály, hanem egy névtér. Akkor használunk ilyet, ha
- a nyelv nem támogatja a névtereket (pl. régebbi php verziók)
- a nyelvben nincsenek globális változók (pl. java)__autoload()-dal töltöm be, ha abba teszek egy xy::__construct()-ot, az lehet megoldás?
Nem. Az autoload arra van, hogy megtaláld a hivatkozott osztály file-ját és include-old. A konstruktor meg az a speciális metódus, amely egy osztály példányosításánál fut le. A kettőnek semmi köze egymáshoz. -
fordfairlane
veterán
válasz
H.O.D. #13119 üzenetére
Használhatsz Singletont.
<?php
class Osztaly {
private $prop1;
private $prop2;
private function __construct() {}
public static function getInstance() {
static $instance = null;
if($instance == null) {
$instance = new Osztaly();
}
$instance->prop1 = "ezt belerakom";
$instance->prop2 = "ezt meg ide";
return $instance;
}
public function getProp1() {
return $this->prop1;
}
public function getProp2() {
return $this->prop2;
}
}
$o = Osztaly::getInstance();
$o2 = Osztaly::getInstance();
var_dump($o === $o2);
?> -
cucka
addikt
válasz
H.O.D. #13119 üzenetére
Igazából a probléma, hogy a kódod tele van OOP kulcsszavakkal, csak jól láthatóan nem igazán tudod, mire használd ezeket.
Egyrészt, amit írsz, az nem OOP kód, lényegében egy namespace-t készítesz egy osztályba csomagolva. Ennyi erővel akár használhatnál namespace-t is.
A másik, hogy a kódodból és a hosszászólásodból jól látszik, hogy az alapvető OOP-s fogalmak hiányoznak, tehát első körben javaslom, ezeket pótold be. (Például a konstruktort nem manuálisan hívod, hanem példányosításnál fut automatikusan. Statikus adattagok konstruktorban történő inicializálása azt jelenti, hogy nem érted, mit jelent a static kulcsszó.). Nehéz úgy segíteni, ha nem egy bugot kell kijavítani, hanem ilyen alapvető gondok vannak a kóddal. -
-
Chris_T
tag
Na, ez is egy jó ötlet
Most hogy ez a sor nem működik:
mysql_query("INSERT INTO szemely(nev, nemzet, szul_ido) VALUES("$_POST["nev_$i"]", "$_POST["nemzet_$i"]", "$_POST["szul_ido_$i"]") ");Nekem is ilyesmi jutott eszembe
$nev_index = "nev_" . $i;
$nemzet_index = "nemzet_" . $i;
$szul_ido_index = "szul_ido_" . $i;
mysql_query("INSERT INTO szemely(nev, nemzet, szul_ido) VALUES('$_POST[$nev_index]', '$_POST[$nemzet_index]', '$_POST[$szul_ido_index]') ");Most azt furcsállom hoyg az elsö esettel szemben itt a $_POST[$szul_ido_index] működik
-
biker
nagyúr
viccesnek vicces, de nem működött.
végül az mb_uppercase és mb_lowercase lett a haverom
így jó, csak kétszer kell kerestetni, egyszer lower, egyszer upper, hogy tutti jó legyenszerk: nem, normál tárolás van. egyszerűen az utf-8 még mindig hadilábon áll, láthatóan, és space a keresett szó előtt és után van, mármint a táblában, de a post-ban nincsen, de ott a %...% metódus rá.
Mondjuk ezzel a k.. táblával eddig csak a szívás volt.
küldenek táblát importálni. a tábla a létező összes karaktert normál úton is tartalmazza, amit a csv tagolásra és delimiterre lehet használni, tehát a szöveg bővelkedik ' " , tab, space, - _ @ # $ jelekkel is. már néha sírok... -
föccer
nagyúr
4-5 napot foglalkoztam eddig vele
on:
POST[]- változóként hogyan tudonátadni konstans értékeket?
definiálok így egy form-ot, ami hivatkozik egy másik php-ra.
<form method=''POST'' action=''vegrehajt.php''>
a formon van x elem, aminek mindnek van neve, és eza alapján a végrehajt.php-ban el tudom öket érni. De azt hogyan csinálom, hogy egy egyszerű konstanst adok át? Értelemszerűen nem akarok hozzá textarea-t vagy text elemet létrehozni, mert minek...
Ja, és az sem megoldás, hogy a hivathozásban átadom ( végrehajt.php?konst1=xxx&konst2=yyyy), mert ''bizalmas'' cuccokat kellene átadnom a végrehajtó php-nek (azonosító, jelszó).
remélem érthető
Köccenet
üdv.: föccer -
föccer
nagyúr
másik kérdés: Miért nem akar menni...
<?php
$_user = $_POST[a_id];
$_jelszo = $_POST[a_jelszo];
$_correkt = ''false'';
$_adminneve = '''';
switch ($_user){
case ''****'': if ($_jelszo == ''*****) {
$_correkt = ''true'';
$_adminneve = ''******'';
break;}
case ''*****'': if ($_jelso == ''******''){
$_correkt = ''true'';
$_adminneve = ''*****'';
break;}
if ($_correkt == true ){
echo ''Üdvözöllek ''.$_adminneve;
}
else
{
echo ''Ismeretlen felhasználó! Semmi keresnivalód itt!'';
}
?>
A hibát az utolsó sorra jelzni ( ;> )
A neveket, és a jelszavakat kicsillagoztam.
Kösszke.
[Szerkesztve] -
Csontikka
aktív tag
Hát az aáll a legközelebb az igazsághoz hogy nem, már nem megy semmi.
Évekkel ezelőtt talán ment de már semmire nem emléxem se html-ből se phpból javat meg sosem tudtam csak annyira amennyira Java1-ből meg kellett tanulni (konzolos parancsok)...
Meg mendomom őszintén azt hittem ,hogy ez tényleg párperces ujjgyakorlat annak aki ért hozzá és sajnos idő hiányában nem nagyon szeretnék elszenvedni vele kb 1 napot mire kiollózom google-el a példa php-kből, javaszkriptekből a nekem megfelelő sorokat. (már 2*2 órát szenvedtem vele, de semeddig sem jutottam)
Szóval kérem szépen ha valaki ''megszán'' egy kicsit, kérem, hogy komplettsegítségben részesítsen! Igazából az sem számít, hogy php-ből vagy JS-ből van az az oldal megnyitva, vagy átirányítva a lényeg hogy menjen, az sem zavar, hogy megfogja a böngésző mint popup, majd letiltom erre az oldalra a lényeg hogy menjen!
Mégegyszer nagyon köszönöm az eddigieket is, a továbbiakat pedig előre is!
Üdv
Csontikka
Új hozzászólás Aktív témák
Hirdetés
- Samsung Galaxy S25 Ultra 12/256Gb-szinte új-2028.05.05-ig garanciás
- Eladó ASUS Phoenix GTX 1660 OC 6GB (PH-GTX1660-O6G)
- Új INTEL LAMINAR RM1 (LGA1700/1851) nullperces, rézmagos hűtők! GAR/SZÁMLA! A LEGOLCSÓBB SZÁMLÁS ÁR!
- Samsung Tab A7 Lite (LTE/4G) SM-T225
- 0 perces RYZEN laptop, eredeti Win10! FullHD IPS / 12GB DDR4 / 1TB M.2 SSD! LEGOLCSÓBB SZÁMLÁS ÁR!
- Samsung Galaxy A22 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy A32 4G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Bomba ár! Lenovo ThinkPad T490 - i5-8GEN I 16GB I 256GB SSD I 14" FHD I Cam I W10 I Garancia!
- Motorola G72 128GB, Kártyafüggetlen, 1 Év Garanciával
- Csere-Beszámítás! Asztali számítógép PC Játékra. I5 12400F / RTX 3070 / 32GB DDR4 / 1TB SSD
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest