srandicky.. ale ked sa opytam kto ma skusenost s PCNTL tak vsetci ticho.. uz studujem a vyzera to fajne... KONECNE aj PHP postupuje medzi vyssie jazyky
Příspěvky odeslané z IP adresy 188.123.100.–
Nechal som bezat, a zatial bezi 17 hodin https://github.com/walkor/mqtt , a bez problemov.
Je to zalozene na https://github.com/walkor/workerman a vyzera, ze to naozaj funguje tak, ako tvorca slubuje. Vyzaduje POSIX a PCNTL a pripadne aj nejake rozsirenie event.
Da sa spustit aj ako "demon", ale uplne presne neviem, co sa pod tym mysli, v pripade PHP.
Zaujimave, ze aj ked sa script vynutene zastavi v kode (napr. exit(), alebo nejaky fatal error), tak sa okamzite automaticky spusti znova. Zastavit sa da len prikazom v konzole (aj spustit, aj zistit stav).
Teoreticky to zatial vyzera dobre. Cronom mozem pre istotu kontrolovat, ci bezi, ak nie, tak ho znova rozbehnem.
Musim nastudovat to PCNTL rozsirenie, zrejme to je gro fungovania. Nema niekto skusenost?
obcasna strata paketov problem nebude, ale bohuzial ovladam maximalne PHP :( ..
Server je tenky klient za par eur, ideal ak by tam bezal len webserver + php. Linux tam bezi uplne odlahceny.
Myslel som ze lighttpd, alebo nginx by nieco take mohol vediet.
Aj ked ten python tiez nevyzera zlozito..
Posiela iba UDP - logy pre syslog... , resp. podporuje aj Mosquitto. Na to som uz pripojeny cez kniznicu https://github.com/walkor/mqtt . Cez tu kniznicu sa daju citat aj tie UDP..
Len netusim, ci je to spravna cesta, ci dokaze bezat php 24/7 nonstop, ci je to spolahlive. Resp. ci sa da nejak kontrolovat ci skript zomrel a znova ho rozbehnut.
Ahojte,
mam zigbee hub s firmwarom tasmota. Ten vie posielat data cez UDP na port mojho servera, kde mam nainstalovany Debian (dietpi), lighttpd s PHP.
Chcel by som tieto data zachytavat a spracovavat v PHP v realnom case - co najrychlejsie ako sa len da, pretoze sa jedna o reakcie, napr. stlacenie tlacitka a nasledne zapnutie svetla.
Riesil niekto nieco podobne?
Rozmyslal som na niecim, co by pocuvalo na danom porte a ked pridu nejake data, tie posle PHPecku na spracovanie. Bud nejaky program na linuxe, alebo nejaky php demon?
Nieco co by bolo spolahlive a bezalo by 24/7, ale nemam skusenost s PHP demonmi a podobnymi rieseniami.
Vedel by ma niekto postrcit ako zacat?
Dakujem
nakoniec som prišiel nato, že to nemôžem triediť cez WHERE, ale priamo cez to spojenie ON...
hádam to mam dobre, kedže to ide :)
SELECT *
FROM hodnoty_defaultne AS hd
LEFT JOIN hodnoty AS h ON hd.id = h.id_hodnoty AND h.id_stranky = 52
Ahojte,
ako by som vedel vybrať s dvoch tabuliek údaje?
V jednej tabulke mám defualtné hodnoty, a v druhej hodnoty ktoré nahradzujú tie defaultné.
------------------------------------------------------
prva tabulka: hodnoty_defaultne:
id name default_hodnota
1 only_in_stock 1
2 ina_hodnota 5
druha tabulka: hodnoty
id id_stranky id_hodnoty hodnota
1 52 1 2
-------------------------------------------------------------
Chcem vytiahnuť všetky defaultné hodnoty s tým, že tie ktoré budú existovať v druhej tabulke na základe spojenia hodnoty.id_hodnoty = hodnoty_defaultne.id, ale tiez na základe nejakého kľúča napr. hodnoty.id_stranky = 52.
Skusal som napr.
SELECT *
FROM hodnoty AS h
LEFT JOIN hodnoty_defaultne AS hd ON hd.id = h.id_hodnoty
WHERE h.id_stranky = 52
ale mi to nejde. Resp. nie som zdatný v spájaní tabuliek. Nie je problém to vytiahnuť dvoma dotazmi, a potom v cykle vymeniť hodnoty, ale mám slabú chvíľku, keď ma nevie napadnúť, ako to urobiť jedným dotazom :(
Ďakujem
produkt 1,2,3 a 5,6 je v podstate ten isty, preto potrebujem vytvorit skupinu variant, ktora ich obsiahne.. zobrazovat sa bude vzdy len jeden z nich (to uz zariadi ina logika)
zmenil som strukturu takto:
id_produkt is_variant
1 1
2 1
3 1
4 0
5 5
6 5
co mi prinesie este jednu vyhodu (ale ta je teraz nepodstatna)
dosiel som k tomuto:
SELECT p1.id_produkt, p2.is_variant, COUNT(p2.is_variant)
FROM products AS p1, products AS p2',
WHERE p1.id_produkt IN (? , ?) AND p1.is_variant <> 0 AND p1.is_variant = p2.is_variant GROUP BY p2.is_variant
ak ma produkt is_variant = 0 , tak sa vo vysledku nezobrazi, co nevadi.. znamena ze ma jeden produkt (doplnim v PHP) ..
moze byt? alebo by to slo aj lepsie zo zachovanim danej struktury?
Caute,
znova som sa zasekol na jednom probleme a neviem sa s neho nejak rozumne dostat..
Mam tabulku produkty
----------------------------------------------------
id_produkt is_variant
1 0
2 1
3 1
4 0
5 0
6 5
Teda produkt 1 ma varianty 2 a 3.
4 produkt nema ziadny iny variant.
5 produkt ma variant 6.
Ale samozrejme to plati aj "opacne"... Napr. produkt 2 ma variant 1 a 3.
Je nejak mozne rozumne zistit kolko variant je spolu pre id_produkt IN (2, 4) ? Spravny vysledok by mal byt 2 => 3 a 4 => 1.
Uplne som na tomto vymrzol a neviem na nic normalne prist.. Zacinam uz zaroven predpokladat, ze sposob ukladania variant bude na nic, kludne to prerobim do samostatnej tabulky ked tak.
diiiiiiiiiiiiik
super, slape to podla mojich predstav :)
zlavu nevypocitam vo DB, lebo je ich viac typov (percentualna, pevna zlava, pevna ciastka) .. a zaroven sa kontroluje ci cena po zlave nie je nizsia ako nakupna cena..
to by uz bol asi psycho dotaz :D
dakujem ti..
dik Kit.. ja som mal v podstate to iste co ty (bez coalesce), len som celu tu podmienku dal do ON .. na vyfiltrovanie vo WHERE som uplne zabudol :D ..
kedze sa tak ci tak taha vsetko z jednej tabulky a vysledok sa vyfiltruje az potom, nebude to pomalsie, ako keby som vytiahol tie data pomocou dvoch jednoduchych dotazov a v PHP si to spojil? (pytam sa preto, lebo tabulky som doteraz spajal max cez INNER JOIN, ostatnym sa tak nerozumiem ako funguju)
Caute,
neviem si moc dobre poradit s nasledujucim problemom:
Mam dve tabulky:
tabulka produkty
-----------------------------------------
id cena
1 5
2 6
3 4
tabulka zlavy
------------------------------------------
id id_cena hodnota
1 1 10
2 2 20
5 6 30
mam kluce pre tabulku produkty napr. WHERE produkty.id IN (2,3)
a potreboval by som k riadkom vybranych produktov ziskat aj ich zlavy
a to aj v pripade ak taka zlava nie je definovana v tabulke zlavy.. s RIGHT JOIN vsak ziskam cely obsah tabulky zlavy
da sa to nejak efektivne vytiahnut?
potrebujem na tej tabulke primarny autoincrement kluc , este k jednej pripravovanej veci.. preto som ju zaroven vyuzil.. vyhladavanie bude rychlejsie hadam v int ako v char(32) nie?
cize indexovanie casu (datetime) to nijak neurychly? ak nie tak indexaciu vypinam..
(indexovaniu okrem primarneho kluca a unique moc nerozumiem :( )
cas indexujem tiez :)
kod je zbytocne hladat.. v cookies je ulozene 151-hbhjHJbjhHJbHJbjh6556fee (symetricky zasifrovane pre istotu, ak by doslo ku kompromitacii DB) , ja si s toho zoberem cislo pred pomlckou (spojovnikom) a hladam v DB iba podla toho.. najdem vysledok a ten porovnam ci suhlasi zvysok za pomlckou.. ak ano, nastartuje sa relacia.. jedna z viacerych vyhod je napr. znemoznenie session fixation, pretoze utocnik nedokaze podhodit ziadny session id tak aby ho system akceptoval..
ano, zrejme som vtedy nemal urobeny index.. lebo uz je to absolutne ok :)
ok nedalo mi to, premeral som to znova, nahral som 300 000 relacii (nahodne generovane data).. asi som predtym urobil nejaku chybicku, ktoru som nevedomky opravil, lebo teraz mi pri tomto pocte nespomaluje vobec.. je to plus minus to iste..
tabulka ma 300k zaznamov a je velka 201MiB
ale tych 10ms je meranych pri praci s 200 000 ulozenymi relaciami.. to je extrem, taka situacia nikdy nenastane (ak ano, vtedy uz budem milionar :D ) .. ako spomalenie by nastalo pri 200 000 klasickych session suboroch? bez uprav by to ani len nenacitalo subor..
momentalne pri ulozenych cca 10 relacii nie je ziadny rozdiel (resp. nie je ani meratelny)
tych 10ms je priemerny rozdiel medzi verziou s klasickymi session (takmer ziadnymi vytvorenymi) a session v DB (200k ulozenych relacii)... system na "obhospodarovanie" relacii som urobil vlastny, cize zabudovane funkcie uz nevyuzivam.. podla mna zanedbatelne..
session id vytvaram takto: ID - CODE , kde ID je primarny kluc v tabulke a CODE je nahodny retazec ktory overim az po ziskani zaznamu podla ID..
refaktoroval som to do mysql, a nemozem vynachvalit.. ziskal som viac moznosti pracovat z relaciami.. otestoval som aj "vykon" oproti klasickym suborom a je to dokonca rychlejsie..
vygeneroval som 200 000 zaznamov v tabulke a cas na ziskanie dat z DB je zanedbatelne vacsi o asi 10ms oproti session suborom.. a realne v praxi tych 200k sedeni ani nebude..
pravdu mas, porovnal som si to .. a niekedy vysledok nesedi pri ===
vies presnejsie popisat v com spociva moja chyba?
session vyuziva jadro systemu najma na svoj vlastny chod.. nie su tam ziadne kosiky atd...
jadro systemu vlastne zabezpecuje aplikaciam ktore su nad nim postavene (eshop, cms... , proste cokolvek) , to, ze vsetky data ktore pridu z vonku (a ktore su don posielane) su konzistentne a nepozmenene (csrf tokeny, podpisuje a overuje podpisy cookies, kontroluje poziadavky z url..........) a ak je vsetko v cajku, routne url a spusti aplikaciu a posle jej potrebne data.
a nebude v mojom pripade dobre ak sa bude aplikacia "starat" do jadra (volaniami ajaxom).. ona o nom by ani nemala vediet ze existuje.. su od seba oddelene.. ked vyprsi session, poziadavka uzivatela neprejde teda jadrom a poziadavka sa tvari ako nedoveryhodna..
no jednoducho podla vzorca, ktory som ti poslal.. len si ho prepises..
stale si nenapisal co presne chces pocitat ak vies uzivatelovu ciastku a urok..
napr. jednoduche urocenie
$vynos = $istina * ( ($urok_v_percentach / 100) * $pocet_rokov );
ok, berem, az taka zataz to nie je.. ale stale ostava problem, ak sa mu uspi pocitac, resp. ho vypne a po zapnuti mu prehliadac predhodi cache stranky a nepoziada o novu..
dalo by sa to vyriesit napr. s localStorage, ale aj tak to moze uzivatela zmiast.. minimalne hlaska v zneni "Vase data system povazuje za nedoveryhodne, zaslite formular znovu"..
sam si programator, urcite aj ty preferujes nepriestrelne riesenia s tym, aby com najmenej obtazovali BFU
to periodicke volanie session_start ma napadlo tiez, ale tam je zas problem, ze kvoli takej "malichernosti" zatazujem server..
no nic, idem to asi prerabat :(
ano, je to cca tych 25 - 30 minut, to je k vzteku, ked toto clovek nedomysli hned na zaciatku.. redis je bez sance na hostingu, ale tusim ze memcache tam je, a ten by siel pouzit..
rozhranie myslis fc. session_set_save_handler ?
ahoj,
pises ze chces vypocitat urok za 1 rok. V databaze mas ciastku a UROK daneho uzivatela. Tak co chces presne vypocitat?
tu mas ked tak pekny clanok:
http://finanza.sk/na-vypocet-urokov-nemusite-pouzivat-len-online-kalkulacky-da-sa-to-aj-z-hlavy-je-na-to-vzorec/
Caute,
pohravam sa s myslienkou zavrhnutia vstavaneho riesenia session v PHP a postavit vlastne (napr. v DB alebo klasika subory).
Stve ma ta "nekonzistencia" dat na roznych serveroch, hostingoch. Na localhoste doma mi ide vsetko ako ma, ale niekde proste vyprsi session skor ako mam nastavene (asi kvoli nejakym internym nastaveniam hostingu).
Mam napr. ulozeny token proti csrf v session, uzivatel si pootvara stranky, medzitym ide na obed... vrati sa, vyplni formular, odosle a samozrejme csrf token nesedi lebo session uz neexistuje.. a mne sa to fakt zle vysvetluje laikovi preco...
Riesi niekto z Vas session po svojom, a ak ano, tak ako?
Dik
Ahojte,
riesim cudziu aplikaciu, kde sa pristupuje k hodnotam v poli (ale tiez sa vytvaraju hodnoty) nejakym takymto stringom napr. "env.ip.local", co znamena, ze vyzaduje hodnotu $_c['env']['ip']['local'] ..
Momentalne je to vyriesenie trochu idiotsky, ze sa string rozdeli pomocou explode a nasledne podla poctu hodnot sa vybera z pola.. cize v tomto pripade:
if ($numargs === 3) {
if ( ( isset($_c[$arg_list[0]]) ) and ( isset($_c[$arg_list[0]][$arg_list[1]]) ) and ( isset($_c[$arg_list[0]][$arg_list[1]][$arg_list[2]]) ) ) {
return $_c[$arg_list[0]][$arg_list[1]][$arg_list[2]];
}
}
chcem to prerobit tak, aby mohlo byt v tom stringu "nekonecno" hodnot, a teda nekonecno rekurzii v tom poli.. len ma uz druhy den nevie nic napadnut.. mozno sa to ani neda inak urobit, ako je to urobene teraz, ale radsej sa opytam sikovnejsich ..
aplikacia sa na iny sposob uz prerobit neda.. znamenalo byt to rozkopanie celej aplikacie a nato nemam gule a bohuzial ani cas :(
#7 Kit
snippet nejde zavolat priamo, je mimo root adresara webu.. ale dik za upozornenie, teoreticky by spustenie niektorych snippetov mohlo sposobit problem.. idem vymysliet este daku poistku.. aplikaciu uz neupravim (aj ked by som rad), prerabam existujucu a do MVC by znamenalo komplet prerabka..
v tomto pripade sa generuje stranka, zo sablon, resp. snippetov.. k dispozicii je viac ako 200 roznych casti a kazda stranka potrebuje ine casti a moze byt zlozena aj s 50tich snippetov.. cize 50x include.. inak to urobit nejde lebo v kazdom snippete este moze prebehnut nejaky php kod.. chodi mi to ale kazdopadne rychlo.. len som mal taku vycitku, ze by som mal znizit pocet include.. co je podla mna zbytocne, nic to neusetri a mne ztazi pracu.. kod je uz v RAMke ako pise Kit..
presne to iste si myslim aj ja ("celu aplikaciu proste rozdelujem do viacerych suborov, ktore sa za behu poskladaju do celku, podla potreby").. dik za potvrdenie
Co si myslite o snahe znizovania poctu pridavanych "suborov" cez include / require (_once) ? Ma to nejaky vykonnostny problem? Ja osobne si myslim, ze by to nemalo spomalovat aplikaciu (ak si vie napr. server subory nechavat v pamati), ale pocul som ze vraj hladanie a pridavanie mnohych suborov aplikaciu vyrazne spomaluje.. Momentalne pracujem tak, ze si celu aplikaciu proste rozdelujem do viacerych suborov, ktore sa za behu poskladaju do celku, podla potreby. Max tak 50 suborov.. Aj pri napr. nette sa nacitava hadam aj 100 suborov, kym sa zacne vobec nieco "diat".. Mam pravdu ja, alebo nie? Alebo je pravda niekde vo vesmire ? :D
dakujem
dakujem, viem ze trochu pletiem nazvoslovie.. trieda je sablona s ktorej sa vyrobi objekt.. nieco ako plan domu je trieda a kazdy postaveny dom podla planu je objekt..
Cize:
$object = new Trieda();
$dom = new Dom($object);
$strom = new Strom($object);
$les = new Les($object);
$object->setProperty = 'value';
v objektoch Dom, Strom, Les najdem vlastnost $param s hodnotou 'value' (samozrejme az po jej vytvoreni). A v pamati bude stale len jeden objekt Trieda. Spravne to chapem, ano?
Caute chcem sa opitat, nakolko nikde som nenasiel uspokojivu odpoved, v kazdom clanku pre zaciatocnikov o OOP sa v podstate rozoberaju len uplne zaklady.
Vytvorim si nejaky objekt triedy. Ten nasledne dodavam do dalsich X Y objektov cez new trieda( $this ), kde si ho ulozim do properties v konstruktore. Bude ten objekt stale rovnaky, aj ked v nom nieco zmenim, bude zmena ukamzite k dispozicii v kazdej triede kde som tento objekt dodal?
Nekopiruje sa ten objekt, a zbytocne to neplni pamat ci vykon? , alebo je to len akysi odkaz v pamati na prvotnu instanciu a vsetkych ostatne objekty pracuju priamo s nim?
Caute, mam zaludnejsiu otazku s ktorou si neviem rady:
Zacal som pouzivat Dependency Injection (namiesto service locatoru). Zavislosti idu standardne cez konstruktory. V urcitom type tried vsak konstruktory nebudu (v predkovi budu, v potomkoch si to nechcem komplikovat).
Injektovanie som zatial urobil takto:
1. metodou inject* (naplni sa automaticky po vytvoreni objektu - objektom vyzadovane zavislosti)
2. vlastnostou s anotaciou s pozadovanym objektom (tu potrebujem naplnit az ked sa realne zavola, teda lazy loading)
(ano, inspiroval som sa v nette)
Jedine co ma napadlo ako ju naplnit je tak, ze ju unset-nem a jej nazov + pozadovany namespace triedy si "odlozim". V getteri sledujem ci sa dana vlastnost zavola, ak ano, tak az vtedy objekt vytvorim a vratim...
Napada Vas nejaka zrada ktora by mohla nastat? Zatial som narazil iba na nutnost aby bola vlastnost PUBLIC..
nie je dost mozne to v takomto fore dobre vysvetlit, je to velmi rozsiahle (plni to podobnu ulohu ako Doctrine) a tazko to zrozumitelne vysvetlim (a tiez neviem ani moc dobre vysvetlovat svoje myslienky, sam ich chapem, ale tazko ich davam zo seba von).
kazdopadne som to cele prekopal s prihliadnutim na vase rady (oboch).. dorobil som zavislosti cez Dependency Injection a anotacie, hned je to o nieco inom :) .. cize uz je to ok, hadam.. diki ze ste ma sprdli :)
#6 Kit
Objekty entity vedia pracovat s datami ktore dostanu, dedia spolocneho rodica ktore im tuto funkcionalitu da.. vedia ich zmenit, extractovat atd.. ale nechcem aby vedeli odkial sa data beru, ani kto ich dodava (zdroj sa moze menit, alebo je zdrojov viac - nato mam toho managera). tiez nechcem aby ich vedeli editovat priamo v zdroji, vymazat zo zdroja atd (nato mam ine triedy)... a preto mi vznika ten problem, ze pred ich instancovanim a naslednym hydratovanim dat potrebujem ich defaultne vlastnosti ziskat.. ak pozadovane data budu kolidovat z vlastnostou entity tak sa data nesmu ani pokusat ziskat..
ak by sa jednalo o jednu sadu dat (teda iba jedna instancia entity) nebol by problem, ale napr. Select, ak ziska viac sad dat, tak musi vratit pole obsahujuce entity)..
jedine co ma napada, instancovat si predtym entitu, s nej si vybrat co potrebujem a zahodit ju.. lenze to sa mi tiez nezda ako koser riesenie..
to bolo len na konkretnu ukazku, Manager spracovava samozrejme podstatne viac roznych druhov operacii v entitach (CRUD), nie len jednoduche "find", preto som chcel tuto ulohu zverit iba jemu (zistit co najst, co zmazat, co editovat...).. Select ma tiez viac sposobov ako hlada data (on zisti kde to najst a ziska to), ak ich nenajde, tak zase ziada dalsiu triedu o ich vytvorenie.. + su tam dalsie triedy ako DELETE atd..
je to pomerne komplexne, a preto su ulohy takto rozdelene.. v podstate ide o obdobu ORM.. nie je tak jednoducha ako v priklade..
Entita by mala byt v samostatnej triede (a subore) kvoli prehladnosti, tiez ich bude pomerne dost.. Entita nevie nic o sebe, ta len nosi svoje vlastnosti.. nevie kde su data
getery setery samozrejme volam getVlastnost a setVlastnost('nova vlastnost')..
takto som bol nauceny, ze ulohy mam delit medzi triedy.. kazda trieda ma mat svoju ulohu a robit len svoju cast..
#2 Kit
ano, aj mne smrdi, ale neviem sa s toho vymotat..
skusim popisat co riesim:
1. Trieda Entita - obsahuje len vlastnosti v ktorych su zapisane urcite data + getery a setery (ktore zdedi od inej abstraktnej triedy) - cize schranka na data
2. Trieda EntityManager - trieda ktora spravuje vsetky Entity.. napr. find('NazovTriedyEntity', 'vlastnostEntity', 'hodnota').. v tejto triede by som napr. potreboval overit ci vlastnostEntity existuje v NazovTriedyEntity - cize manazer schranok
3. Trieda Select - tato trieda zozenie data na zaklade 'NazovTriedyEntity', 'vlastnostEntity', 'hodnota' (a znova predtym potrebuje jej vlastnosti) a az teraz vytvori Instanciu Entita podla NazovTriedyEntity (alebo pole instancii podla poctu dat), do ktorej ziskane data "hydratuje".. - jeho ulohou je plnit entity (aj ked toto by mohol robit tiez EntityManager)
Teda:
$entita = $entityManager->find('NazovTriedyEntity', 'vlastnostEntity', 'hodnota'); // poziada Select o naplnene entity
$entita->setVlastnost; $entita->getVlastnost;
Neviem preto, ci by bolo spravne volat instanciu schranky (Entitu), len preto aby som ziskal jej vlastnosti a potom ju zahadzovat.. Bohuzial aj EntityManager aj Select si potrebuju niekedy overit vlastnost Entity este pred jej instancovanim.. proces ziskavania dat je totiz narocny nato, aby prebehol zbytocne ak data nebudu sediet..
uz som to prepisal asi 5x a furt neviem prist na aspon trochu "cisty" sposob..
Ahojte,
potreboval by som poradit s nejakym elegantnym riesenim problemu, s ktorym si neviem rady. Som zaciatocnik v OOP.
Mam triedu v ktorej mam definovane vlastnosti a kvoli zapuzdreniu maju modifikatory private (alebo protected). Data z nich si upravujem a ziskavam getermi a setermi.
Avsak, niekedy potrebujem v inej triede zistit ich (defaultny) obsah, ale nechcem (nemozem) triedu instancovat. Zatial som vymyslel len sposob statickou metodou, ktora je vnutri danej triedy a pomocou get_class_vars ich vytiahnem a vratim triede ktora ich ziada (tam data rozparsujem).
Ale to je podla mna prasacina :( .. Nic ine ma vsak uz nenapadlo. Vy sikovnejsi, ako by ste k tomu pristupili vy?
Caute,
myslel som, ze to bude jednoduchsie, ale ked som si k tomu sadol, ukazalo sa, ze ani nie (ako to vacsinou tak byva)
v mysql DB mam stringy ktore sa generuju pre kazdu polozku (clanok) automaticky..
napr. "topanky" pre clanok Topánky
avsak ked vytvorim dalsiu polozku (clanok), ktora sa bude volat rovnako potrebujem aby mi vygenerovalo napr. "topanky-1" (resp. podobne riesenie, toto konkretne je zalozene na pridani cisla, ak uz seo alias v DB existuje)..
ak znova zadam dasli clanok Topánky tak vygeneruje "topanky-2" atd..
skuste mi nastrelit nejake spolahlive riesenie s tym ze v DB mozu byt aj "topanky-modre", alebo tam vobec nemusia byt "topanky" iba verzie s cislami (napr. zmazany clanok)...
nedari sa mi nic kloudne vymysliet :( ..
jj mam, aj virtual server... ja som si tiez doteraz myslel ze konstanta moze byt len skalar, ale nastala situacia kedy mi dobre vyhovuje pole a ono to fungovalo :D
teraz som zistil ze je to nova ficura v 5.6 ktoru pouzivam :)
Ahojte,
chcem sa opitat na jednu vec, nie som az tak zbehly v OOP,
Mozem pouzit v triede konstantu ktora bude polom?
const NAZOV = array('value 1', 'value 2');
lebo vsade sa uvadza, ze konstatna musi byt skalar. Ale po vyskusani mi to funguje, tak teda ci robim dobre, alebo to radsej riesit inak.
dakujem
Caute , stretol sa niekto s niecim takymto?
mam pole
$array[0] = array();
$array[1] = array();
$array['last'] = array();
a ked iterujem pole cez
foreach($array as $key => $value) {
if ($key == 'last') { echo $key; break; }
}
tak to hned skonci s vysledkom 0 ?? ked pouzijem
if ($key === 'last')
tak to pracuje normalne
co to je ?
Zdravim,
potreboval by som pomoc od niekoho skusenejsieho. Bolo by mozne nieco taketo?
mam abstraktnu triedu:
abstract class BaseRepository extends Object
{
}
a nasledne napr.
class NotificationRepository extends BaseRepository
{
public function nejaka_uloha()
{
$this->getRepository('User')->metoda_z_UserRepository();
}
}
a namiesto injektovania instancii cez konstruktor by som chcel, ak sa da pohodlne, nejak takto pohodlne zavolat nejaku inu metodu z inej instancie triedy (teda ziskat napr. UserRepository)?
Je to nejak mozne? Idealne v Nette
pouzivam nette.. v konstante budu len hlasky.. napr. v basepresenteri bude defaultna hlaska (a teda aj metody , ktore tu hlasku potrebuju), a v niektorych par presenteroch by som chcel tuto hlasku zmenit.. nic viac.. DI este moc dobre nechapem :(
Caute, nikde sa nemozem dopatrat k uspokojivej odpovedi.
Mam napr. abstraktnu triedu:
abstract class A {
use Nejaky_Trait_s metodami;
const KONSTANTA = 'obsah';
}
a dalej triedu
class B extends A {
const KONSTANTA = 'a tu ju chcem prepisat';
}
a prave v tom Trait-e teraz potrebujem zistit hodnotu KONSTANTY .. pri self::KONSTATNA mi vrati 'obsah'.. je spravne pouzit static::KONSTANTA ? vtedy to vrati prepisanu hodnotu s triedy B.. len neviem ci je to riesenie OK.. konstantu bude mozne v kode prepisovat podla potreby...