- India felől közelít egy 7550 mAh-s Redmi
- Karaktere biztos lesz az első Nothing fejhallgatónak
- Csíkszélességben verné az Exynos 2600 a Snapdragon 8 Elite 2-t
- Google Pixel 9 Pro XL - hét szűk esztendő
- Realme GT Master Edition - mestermunka
- Nem lett arányos a fogyókúra
- Yettel topik
- Samsung Galaxy A55 - új év, régi stratégia
- iPhone topik
- Poco F3 - a mindenes, de nem mindenkinek
Új hozzászólás Aktív témák
-
pelyib
tag
válasz
#68216320 #19993 üzenetére
cli-ben:
belepsz a project konvytarabaphp /eleresi/ut/composer.phar init
Initcializalod a projectet, ertelemszeruen valaszolsz, ezzel letrejon a composer.json file.
Bovebbenmajd
php /eleresi/ut/composer.phar require clegginabox/pdf-merger:dev-master
BovebbenEkkor mar van a project konyvtarban egy ./vendor konyvtar, abban pedig egy autoload.php
Ennek az fajlnak a betoltese kell kb az elso lepesnek lennie az alkalmazasodban.
BovebbenOrom, boldogsag. Ha nem akarsz rogton a projectedben jatszani, akkor letrehozol egy ures foldert, es ott ugyan ezeket megteszed, es figyeled az eredemenyt.
-
pelyib
tag
Gondolom (#19983) Doink kommentjet lattad mar. Pontosan ugy kell, nagyon szepen megirta.
Es igen az vegtelen ciklus (require_once megoldhatja ezt is).Esetleg meg olvasnivalo front controller + rewrite rule
-
pelyib
tag
válasz
csanyiadam #19979 üzenetére
Ha jol ertem akkor az elso query-nek a checkbox fieldjet explodolni kell es a kapott array-l le kell kerni a tobbi tablabol.
De ha jol ertem akkor neked egy kapcsolo tabla (Association table) kell ami a ket tabla kozotti kapcsolatokat tartalmazza.
Valahogy igy:
form
- form_idform_checkbox
- form_id
- checkbox_idcheckbox
- chekcbox_id
- name"ID azonosítókat több táblából is hivatkozom"
Ugyan azzal az ID-val masra hivatkozni nem szerencses! -
pelyib
tag
Kicsit osszezavarsz, azt irtad, hogy: "úgy megy az oldal, ahogy szeretném" aztan megse?
Nemreg nekunk volt egy hasolno projectunk, PHP backend es .net frontend app (ha jol remlek, de en a PHP-s oldalon voltam) + webview.
Ugy emlekszem, h ott barmelyik bongeszot be tudtak huzni a sracok, elejen nalunk is volt aggodas, de talaltak ra megoldast.
Viszont nalunk ugy ment, h a .net app kommunikalt a PHP app-l es atadta az adatot a webview-ban futo kis webapp-nak.
Valahogy igy:
webapp <-> .net <-> PHP -
pelyib
tag
Be kell tolteni a masik fajlt amibol szeretnel hasznalni valamit.
Ennek tobb megoldasa lehet:
- include, require es tarsai
- sajat autoloader irasa (nagyon nem ajanlott!)
- composer hasznalata (elsore lehet soknak tunik de iszonyat egyszeruve teszi az eletet)Ha csak valamit patkolsz es csak mukodjon, akkor 1. megoldas jo lehet.
Ha tanulsz es erdekel a tema akkor elobb az 1. megoldassal gyors siker lehet, es kozben a 2. megoldasrol olvasni kiprobalni.
Udv a klubban. -
pelyib
tag
válasz
csanyiadam #19962 üzenetére
Mivel engem is erdekel a tema, hatha a tobbiek is erot kapnak.
Bar nem Youtube vagy FB de a ceghez a php[architect] magazine jon (sajnos elofizeteses), neha van benne erdekes cikk. -
pelyib
tag
Kicsit olyan erzesm van mintha a befott rakna el a nagymamat.
Mi lenne, ha inkabb egy olyan scriptet irnal ami rendesen tudja kezelni a HTTP requesteket, lementi az eredmenyt, es a letrejott fajllal megnyitja az Excel-t.
Ezt a script-t olyan nyelven irod amit ismersz es nem kell megeroszakolni egy POST + request timeout miatt (PHP ilyen).
De valszeg PowerShell / Bash boven elegendo lehet.Amit te akarsz ott nem csak 1 PHP script kell, de kell egy webserver is.
Amugy nem nehez, (#19955) SunyaMacs elso linkje jo lehet, kulso link-nek a valaszat ki kell iratni a kimenetre, es beallitani a content-type-t a megfelelore. -
-
pelyib
tag
válasz
instantwater #19927 üzenetére
Sajnos a neten fellelheto peldak 99% hasonlo megoldasokkal operal. En is es szerintem sokan masok is ezekbol tanultunk.
Onnan meg nagyon messze van meg az "Enterprise Architecture Patterns". -
pelyib
tag
-
pelyib
tag
válasz
SunyaMacs #19897 üzenetére
Nem hasznalok CodeIgniter, de a dokumentacioban van egy ilyen:
sess_expiration: "The number of seconds you would like the session to last. If you would like a non-expiring session (until browser is closed) set the value to zero: 0"
Tippre ez kell neked. -
pelyib
tag
válasz
zsolti_20 #19886 üzenetére
Teljesen jó megoldás
A védelemre megoldás lehet a [htaccess Apache-hoz]
+ HTTPS se ártana (https://letsencrypt.org/) -
pelyib
tag
válasz
zsolti_20 #19884 üzenetére
FB Messengernek pl van browser alapú megoldása is: messenger.com
De ha nem ez akkor egy Google keresés erre: "php chat" fog dobni millió megoldást.
Twitter? Ott is kétirányú a kommunikáció.Ha meg saját akkor egy sima form kell, ehhez egy server oldali script ami lementi (mysql-be, esetleg file) meg egy másik ami kiolvassa és generál egy html-t belőle.
-
pelyib
tag
-
pelyib
tag
válasz
radi8tor #19785 üzenetére
Nem azért a 10 fillérért de egy json_encode nem lenne jobb megoldás mint PHP-ban összefűzni a stringet?
Azt már tényleg félek megkérdezni, hogy az egész miért van script tagben. -
pelyib
tag
válasz
radi8tor #19780 üzenetére
Null coalescing operator még lehet megoldás. DE ettől még a hiba meglesz, amit korábban kéne elkapni, lekezelni, logolni.
Szóval inkább a valódi okot kéne megtalálni (debugollni), hogy miért / miként juthat odáig a kód ha nincs is semmi hasznos abban a változóban. -
pelyib
tag
válasz
radi8tor #19765 üzenetére
Probald meg az empty-t
if (!empty($od[0]['ro']))
{
// ha nem ures, akkor csinaljon valamit
}ui: A pontos hibauzenet sokat segitene (ha ez se mukodik).
ui2: Amugy ez a foreach siman felulirhatja a $data-t ha tobb elem van az 'ro'-ban. En azt csinalnam, hogy a if-ben rogton vissza is ternek. Amibol az is kovetkezik, h a fentebb levo feltetelt is meg lehetne forditani, de ez mar messzire vezet -
pelyib
tag
Code styling az mindig ízlés vagy hit kérdése. Ebbe (szerintem) kár belemenni, a lényeg, hogy a csapat / cég megállapodjon és mindenki ahhoz tartsa magát. Különben káosz lesz, az senkinek se jó.
A linkelt oldal nem egy blog post, hanem egy "PHP Standards Recommendation".
Itt találod kik vesznek részt a PSR-k kidolgozásában. A memberek projektjeit elnézve bár lehet, hogy "friss egyetemista" de hogy zéró gyakorlat azt kétlem.Pár példa hogy kik használják, és vették alapul ezeket a sztenderdeket:
- Composer
- Symfony
- Laravel
- Guzzle
- Monolog -
pelyib
tag
-
pelyib
tag
válasz
I02S3F #19703 üzenetére
Minnél közelebb a hiba előfordulásához. Ott eldöntöd hogy miként kezeled le. Dobsz egy másik specifikus exceptiont (fail fast) vagy logolod és visszatérsz valami használhatóval.
De ez mindig a helyzettől függ, neked mint fejlesztőnek kell eldöntened mi a helyes megoldás. -
pelyib
tag
válasz
radi8tor #19697 üzenetére
Ebből úgy tűnik Gave rátapintott az egyik megoldásra
Nézz egy phpinfo()-t vagy get_loaded_extensions
-
pelyib
tag
válasz
bandi0000 #19654 üzenetére
A linkelt lib-nek a logger csak opcionális paramétere, szóval ha nem kell, akkor ne add át neki.
-
pelyib
tag
válasz
vakondka #19655 üzenetére
Én nem szívnék az object-l, inkább átkonvertálnám sima tömbbé.
Valahogy így. -
pelyib
tag
válasz
adika4444 #19639 üzenetére
Jól gondolod, a user requestet nem kéne ezzel lassítani. Ott csak csináljon meg egy "task"-t a feldolgozónak. A feldolgozót pedig crontab-ból x időközönként a rendszer futattja.
A "task" lehet egy szimpla flag (mező) a DB "bejegyzesek" táblában, vagy akár egy teljesen külön lévő tábla is. Utóbbi lényegesen rugalmasabb. És akár még MySQL szinten is meg tudod oldani trigger-rel.
-
pelyib
tag
válasz
adika4444 #19635 üzenetére
Mit jelent, hogy lassú?
Mi lenne szerinted a gyors, vagy elfogadható futásidő?
Hol futott eddig, ha most már szerveren?
Nem lehet, hogy limit nélkül kéred le DB-ből?Megnézted már mi pontosan a lassú? MySQL lekérdezés, maga a PHP kód futás (ez ugye tiszta PHP-ra értem, nem arra pl.: amikor vár az SQL szerverre), esetleg maga az email küldés a lassú?
-
pelyib
tag
válasz
bandi0000 #19630 üzenetére
Nem hiányzik ott egy "/" a models után?
Amúgy az összes kódot (konfiguració ugye másik mappa) illik a "/src" mappába rakni így egy namespaceben van minden kódod
Teszteket csak deven kellenek behúzni.
Pl ahogy az a Composer doksijában is van. -
pelyib
tag
válasz
bandi0000 #19601 üzenetére
Általában elé raknak egy dedikált webszervert (Nginx, Apache) ami bizonyos szabályok alapján eldönti, hogy pontosan hogyan szolgálja ki a kérést, esetünkben továbbítja a PHP felé.
Ennek beállítására ~ végtelen leírás van a neten, többek között a Slim oldalán is. -
pelyib
tag
válasz
bandi0000 #19599 üzenetére
Az átadott osztálynak implementálni kell a JsonSerializable interface-t.
-
pelyib
tag
válasz
bandi0000 #19586 üzenetére
Az attól függ, hogy mit akarsz validalni.
Ha a request-t, akkor én a fentebb levő middleware-s megoldást mondanám, azzal az invalid request el se jut a controllerig. De akár saját magad megírt egyszerű class is jó ami csak a Respect\Validation libet használja.
Szóval igen, külön osztály, akár minden endpointhoz egyet-egyet.Ha meg csak a paraméterét egy metodusnak, akkor meg simán ott helyben: Respect\Validation.
És igen szivás meg idő mindent levalidalni, de utána nyugodtabban alszik az ember.
-
pelyib
tag
válasz
adika4444 #19406 üzenetére
Azt szokták mondani, hogy majd optimalizálunk ha kell, addig pedig oldjuk meg, hogy működjön.
Feltételezem a platform tábla nem fog 50 sor fölé menni, esetleg 100 de akkor már mindenféle Linux is benne van. Ez nem lehet tétel.
Az appok listája se hiszem, hogy akár a 10000-t el fogja érni. Megintcsak nem kéne, hogy tétel legyen.
Az application_platform tábla ebből kiindulva max 100x10000=1000000. Nah ez már kezd érdekes lenni. De ettől se kell félni, csak rendesen kell használni az index-ket. Ha nem egy RPIn akarod hostolni akkor ez nem kéne hogy probléma legyen.Szóval lekéred az appok listáját (ha platformra is keres éppen akkor rá kell joinolni az application_platform táblát).
Lesz egy listád, abból ki tudod gyűjteni az application_id-t, a kapott ID listával pedig lekérni a hozzájuk tartozó platformokat:select * from platform inner join application_platform on platform.id = application_platform.platform_id
where application_platform.application_id in (1, 2, 3)
Ezzel meg lehet visszamenni az eredeti application listához és hozzáadni a platformokat."de esetlegesen változhat a platformlista" => mindig az aktuális állapotot kapod vissza, szóval ha nem kell más adat akkor az is müködhet. Ezt te tudod, hogy mi kell a megjelenítési rétegbe
-
pelyib
tag
válasz
radi8tor #19402 üzenetére
Úgy látom, hogy a templatehez nem kell nyúlni. Happy debugging
<?php
$seo = [];
$seoMenuElementChildren = [];
if ($this->user->hasPermission('access', 'extension/extension/module') && $this->config->get('module_301redirect_status'))
{
$redirect301[] = [
'name' => $this->language->get('text_seo_301redirect'),
'href' => $this->url->link('extension/module/301redirect', 'user_token=' . $this->session->data['user_token'], true),
'children' => [],
];
}
if (isset($redirect301))
{
$seoMenuElementChildren[] = $redirect301;
}
if ($this->user->hasPermission('access', 'extension/extension/module') && $this->config->get('module_302redirect_status'))
{
$redirect302[] = [
'name' => $this->language->get('text_seo_302redirect'),
'href' => $this->url->link('extension/module/302redirect', 'user_token=' . $this->session->data['user_token'], true),
'children' => [],
];
}
if (isset($redirect302))
{
$seoMenuElementChildren[] = $redirect302;
}
if (!empty($seoMenuElementChildren))
{
$data['menus'][] = [
'id' => 'menu-seo',
'icon' => 'fa-search',
'name' => $this->language->get('text_seo'),
'href' => '',
'children' => $seoMenuElementChildren,
];
} -
pelyib
tag
válasz
adika4444 #19397 üzenetére
"le tudom kérni a fenntebbi select-tel együtt az adott alkalmazás platformlistáját"
Igen meg lehet oldani, én két megoldást mondanék:
- Join + group_concat nem szép, illetve ha még plusz adat kell a platform táblából akkor nem működik.
- Lekéred az app listát, kigyűjtőd az ID-t (
WHERE application_id IN (1, 2, 3)
) és a második SELECT queryvel lekéred a hozzájuk tartozó platformokat. Ezek után csak be kell frissíteni a application listád elemeit a megfelelő platformokkal. -
pelyib
tag
válasz
adika4444 #19373 üzenetére
Enum field legyen ha nem akarsz másik táblát + kapcsoló táblát.
Igaz ha bővül akkor ennél is alter-ni kell a táblát, de legalább a keresés gyors lesz és kevesebb helyet is foglal (mint egy text mező).
Illetve én személy szerint erre az esetre pont nem használnék több flag mezőt inkább a dedikált táblákat tiszta mint a hó. -
pelyib
tag
válasz
radi8tor #19383 üzenetére
Tippre erről a fájlról van szó: Github fájl
Ha composerrel van használva akkor töröld a ./vendor mappát és CLI-ből
composer install
, ha nem akkor csak kopipészt oszt jónapot -
-
pelyib
tag
válasz
BlackDevil #19241 üzenetére
Én megnézném a raw respons-át a távoli szervernek, esetleg megváltozott.
+ egy jó tanács: ne írd felül folyamatosan a változóidat. Igencsak meglepő bugokat tud ez okozni.
$rawResponse = file_get_contents("http://{$server}:{$port}/status2.xsl?mount={$mount}");
$arrayResponse = explode("\n", $rawResponse);
$status = explode(",", $arrayResponse[3]);Elnevezéseken végtelenségig lehetne vitatkozni
-
pelyib
tag
válasz
bucihost #18922 üzenetére
Bocsi, azt hittem a fejlesztes kozben van ez.
Akkor pedig neked a Cache-control kell: http://httpd.apache.org/docs/current/mod/mod_expires.html
(viszont amig nem jar le addig nem is fog a szerverhez fordulni)A verziozas is egy megoldas, deploy kozben kiszamolja az uj verziot es hozzacsapja a linkekhez, vagy ha nincs ilyen akkor egy bash / php script csinalja ezt x percenkent (vagy valami triggereli a futasat).
Vagy akar amit korabban irtak, hogy request kozben kiszamolja aztan cachebe lerakod y (fel napra pl) idore es kovetkezo request mar tudja hasznalni a cachet (kerdes, hogy ha valtozik valami akkor mi fogja ezt kiutni).
Szoval lehetosegek vannak boven -
pelyib
tag
válasz
hramon94 #18910 üzenetére
http://php.net/manual/en/function.strtotime.php
Végigmész a holidays tömbön, és kivonod egymásból őket:
(strtotime($holidays[$i]) - strtotime($start) > 0) && (strtotime($end) - strtotime($holidays[$i]))Innen már ízlés kérdése, h növelsz egy számlálót vagy gyűjtöd őket egy másik tömbbe...
Új hozzászólás Aktív témák
Hirdetés
- Építő/felújító topik
- Azonnali fotós kérdések órája
- India felől közelít egy 7550 mAh-s Redmi
- Fujifilm X
- Karaktere biztos lesz az első Nothing fejhallgatónak
- Android játékok topikja
- Kertészet, mezőgazdaság topik
- Nintendo Switch 2
- Csíkszélességben verné az Exynos 2600 a Snapdragon 8 Elite 2-t
- BestBuy topik
- További aktív témák...
- GAMER PC - RTX 4070 Ti - Ryzen 7 5700x - 32GB DDR4 - 1TB Nvme SSD
- LOQ 15ARP9 15.6" FHD IPS Ryzen 7 7435HS RTX 4060 32GB 512GB NVMe gar
- Steam Deck LCD 512GB + Kiegészítők
- Hp Elitebook 840 G8 CSAK 1DB POFÁTLAN ÁRON ÚJ KIJELZŐ!!!!
- Apple iPhone 16 Pro 1TB Fekete Titán Színben Bontatlan 12 Hó Garanciával
- Samsung Galaxy S23 , 8/128GB, Kártyafüggetlen
- AKCIÓ! Intel Core i7 7700K 4 mag 8 szál processzor garanciával hibátlan működéssel
- BESZÁMÍTÁS! ASUS A520M R5 5600X 16GB DDR4 512GB SSD RTX 3060Ti 8GB Rampage SHIVA Enermax 650W
- Telefon felvásárlás!! Samsung Galaxy A14/Samsung Galaxy A34/Samsung Galaxy A54
- MSI CreatorPro Z16P - i7-12700H, RTX A5500, értintőkijelző
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest