Autor Zpráva
tester
Profil *
Během spouštění konstruktoru třídy bych chtěl otestovat všechny veřejné členy (kromě metod) jestli jsou veřejné a pokud ano, iniciovat je jako pole. Dá se to udělat ve verzi PHP 5.2? Našel jsem jen řešení kde se používá new na již hotový objekt.
juriad
Profil
Můžeš použít reflexi: php.net/manual/en/reflectionclass.getproperties.php, ukázka nastavení hodnoty v php.net/manual/en/class.reflection.php#99616.

<?php

class X {
    public $a;
    public $b = 1;
    public $c = array(1, 2);
    
    function __construct() {
        $reflector = new ReflectionClass('X');
        $properties = $reflector->getProperties(ReflectionProperty::IS_PUBLIC);
        foreach($properties as $property) {
            if ($this->{$property->getName()} == NULL) {
                $this->{$property->getName()} = array();
            }
        }
    }
}

$x = new X();
var_dump($x);

Mimochodem, o jakou čuňačinu se to snažíš?
tester
Profil *
No tam se právě používá to new. Musíš nejdříve vytvořit objekt a pak ho předat jako argument do konstruktoru ReflectionClass... Jak to tedy udělat přímo zevnitř toho konstruktoru?


class mojetrida{
public jmena; public prijmeni; public adresy; public telefony;
private global_instance;
public function __construct()
{
// tady chci projít
jmena, prijmeni, adresy, telefony a nastavit je jako array();
}
}
MartinP_
Profil *
To se mi zdá, že řešení juriada splňuje. Po zavolání konstruktoru se projdou veřejné vlastnosti a ty prázdné to nastaví jako čistý array.
tester
Profil *
juriad:
Dík za kód. Řeším toto: Strict Standards: Creating default object from empty value
snažím se iniciovat všechny členy, ale nezabírá to


Teď čtu ale odpověď od Kubo 2 a zjišťuji že problém byl v něčem jiném. Ten kód cos napsal se mi ale bude hodit.
Jan Tvrdík
Profil
tester:
Proč programuješ v 10 let staré verzi PHP?
tester
Profil *
Jan Tvrdík:
Není to jedno? Já v tom rozdíl nevidím.
Kubo2
Profil
tester:
No je v tom rozdiel práve v tých desiatich rokoch. To je tiež mimochodom aj dôvod, prečo dnešné PHP 7 beží o 40% rýchlejšie než tvoje PHP 5.2 — pretože prográmatori jadra PHP nezostali desať rokov pozadu a prekopali Zend Machine a takisto PHP Core. Pretože za tých desať rokov sa toho hodne veľa zmenilo.
tester
Profil *
Kubo2:
Na PHP7 nikdy nepojedu o tom si mohu nechat zdát. Funguju na XPčkách a s těmi jsem nadmíru spokojen a nehodlám se jich vzdát. Jistě, teď si zas budu muset vyslechnout přednášky o tom proč bych měl updatovat Windows ... Budu updatovat WampServer 2.5 (php5.5.12-32) až na to bude čas a chuť. Zatím pro mě není rozdíl protože zpracování stránky mi zabere 0.16s. Tak mi řekni v čem ušetřím ten čas :) ? Výš než 5.5.12 se s PHP se asi nedostanu protože tam je problém s tím že od určité verze instalačka Wampu chce vyšší verzi Windowsu. Updatovat potřebuju ale na verzi 5.3 by mi stačilo pro to co k projektu potřebuji.


Oprava, má jít o Wampserver2.4 (php5.4.12 mysql5.6.12 apache2.4.4)
Martin2
Profil *
tester:
Jo jo, řekni nám ještě něco chytrého. Něco o rozdílném přístupu k programování nebo k životu celkově.

Poslední oficiální binárka, která podporuje XP je PHP v5.4. To je ještě poměrně rozumná a rozšířená verze. Pokud nejsi úplný patlal, upgraduj aspoň na tu. Ušetříš sobě i těm chudákům, kteří budou tvé programy později používat, spoustu starostí, protože změn mezi 5.2 → 5.3 je opravdu hodně. Je to podobný skok jako 5.6 → 7.0.
tester
Profil *
Martin2:
Jak víš že ty zdrojové soubory zveřejním? Proč bych to měl dělat? A pokud jo tak je to jen moje věc jak moc to přehledné bude. Koneckonců každý kdo používá jakýkoliv program zadarmo má být rád že to má k dispozici a ne si ještě stěžovat na to že je to nepřehledné... Takže nechápu tvou snahu o upgrade mého php jak kdyby šlo o tvoji věc... Já jsem neříkal že upgradovat nebudu ale že to odkládám dokud to nepotřebuju. Na výsledek kódu nemá vliv jestli používám PHP 5.2 nebo 5.3 nebo 5.4 protože dělám věci, které na to nemají vliv. Právě kvůli lidem s takovým přístupem jako máš ty o důvod méně něco zveřejňovat ještě aby na mě někdo za zády nadával a plival!
Martin2
Profil *
tester:
Jak víš že ty zdrojové soubory zveřejním?
Budeš je dávat na server, ne? Tím pádem existuje riziko, že bude tvé programy někdo později potřebovat upravit. Nebo zpátky zprovoznit po upgradu PHP.

Na výsledek kódu nemá vliv jestli používám PHP 5.2 nebo 5.3 nebo 5.4 protože dělám věci, které na to nemají vliv.
Právě proto. Děláš věci, které na to nemají vliv. Věci, které se už nepoužívají z hlediska kompatibility nebo návrhové kvality.

Právě kvůli lidem s takovým přístupem jako máš ty o důvod méně něco zveřejňovat ještě aby na mě někdo za zády nadával a plival!
Pokud nezměníš svůj přístup, tak o tom opravdu ani neuvažuj.
tester
Profil *
Martin2:
Programuju protože mě baví tvořit nové věci ne proto abych se přizpůsoboval požadavkům někoho jiného. Nikomu nic nedlužím abych programoval tak jak to chtějí jiní. Nedělám to za peníze ani pro peníze, nikdo by neměl očekávat že budu programovat tak jak to chce on. Ale i když to nedělám pro peníze neznamená to že dám své dílo automaticky zdarma ke stažení.
Keeehi
Profil
Výborně, takže ty teďbudeš programovat tvojí aplikaci. Protože jsi patlal, tak tu budeš otravovat, jak se dělá to a to. Když už ti někdo poradí, tak mu vynadáš za to, že to nefunguje. Po dlouhé době se přijde na to, že máš zastarlou verzi PHP a bude se dohledávat, jak se to vlastně před těmi lety dělalo. Když to konečně doděláš, tak ji budeš chtít aby ji někdo používal -> budeš ji chtít vystavit na web. No a nastane asi jedna za dvou možností, tvůj výtvor nebude fungovat, protože na webovém serveru poběří třeba php 5.5 a věci co fungovaly v 5.2 tam fungovat nebudou. Takže tu budeš zase žadonit o pomoc, jak upravit script pro php 5.2 tak aby fungoval na 5.5. Nebo druhá možnost je, že někde v zaprášených zákoutích internetu najdeš hosting s php 5.2. Radostně tam svůj výtvor nahraješ a budeš se plácat po zádech. Ovšem během pár dní začnou tvé stránky šířit malware protože správce serveru, kterému tam běží php 5.2 na nějakou bezpečnost asi z vysoka kašle a tak ten server bude plný bezpečnostních děr.
Martin2
Profil *
tester:
Programuju protože mě baví tvořit nové věci ne proto abych se přizpůsoboval požadavkům někoho jiného. Nikomu nic nedlužím abych programoval tak jak to chtějí jiní.
Musím říct, že takovou kombinaci arogance a zabedněnosti člověk hned tak nepotká. Suit yourself. Problém je v tom, že něco nevíš, přijdeš se sem zeptat, my ti řeknem jak se daný problém správně řeší, ty nás pošleš do pr­dele s tím že to budeš dělat po svém a další den znovu. Je to trochu frustrující – asi jako mluvit do zdi.
tester
Profil *
Keeehi:
Nikomu jsem tady nenadával tak nevím proč tu podstrkuješ tyhle lži a spekulace. Poběží to na serveru s PHP 5.6 nebo novějším, ale programuji a testuji na starším PHP, které budu ještě updatovat. Nevím proč se vám chce v tom rýpat.
Zechy
Profil
tester:
Což nás vlastně opět dostává k tomu, co psal Keeehi.

Je to sice vaše starost, ale doporučení, co tu lidi dávají mají své opodstatnění. Trošku mi to připomíná rčení „Nemám čas brousit sekeru, musím sekat dříví“. Ve výsledku, až nakonec nasadíte ten skript na 5.6 nemusí fungovat zhola nic, pak vás to bude stát další úsilí a nervy, a kdyby se do toho dávali ještě peníze, tak i o dost víc peněz.

Upgrade PHP může být na 10 minut, za to přepsat vše, co pak nemusí fungovat může zabrat 10 dní.
tester
Profil *
Zechy:
Ta aplikace už jela na vyšší verzi byla to myslím ta 5.3, takže se až tak moc nebojím. Co nebude fungovat to opravím. Předělávat bych to přece musel tak či tak. Bylo by jedno jestli to budu předělávat teď nebo potom kdybych neměl rozdělanou spoustu věcí, které je třeba nejdříve dokončit.

Martin2:
Vy si pletete aroganci s asertivitou. Já nikde nepsal že na vás házím bobek nebo ať si strčíte své rady za kloubouk, já psal o posloupnosti úkolů které řeším a o času. To jsme už probírali v jiném vlákně. Předělat aplikaci není otázka jednoho měsíce ještě když potřebuju nejdříve dodělat rozdělané věci.
Martin2
Profil *
tester:
Poběží to na serveru s PHP 5.6 nebo novějším, ale programuji a testuji na starším PHP, které budu ještě updatovat.
To je vtip? Ne moc dobrý. Takže na serveru máš 5.6, ale musíš použít starší postup kvůli svému starému vývojovému prostředí. To už není zabedněnost, to už je obyčejná slabomyslnost.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0