Jump to content
php.lv forumi

john.brown

Reģistrētie lietotāji
  • Posts

    510
  • Joined

  • Last visited

Posts posted by john.brown

  1. 2 v3rb0

    Var, bet labāk tā nedarīt - pierodot močīt notices, ar laiku sāc rakstīt galīgi nelasāmu/nepavadāmu kodu.

    Bez tam, neaizmirstat, ka viņam massīvs (vismaz sākumā) ir: Array(0 => array($lieta => $skaits)). Pēc tam viņš to mēģina nomodificēt uz array($lieta => $skaits). Domāju, tas arī nesekmē koda izpildi :)

     

    ray

    Tu papriekš saproti, vai tev vajadzīgs masīvu masīvs, vai pietiek vienk ar masīvu :) Pēdējā gadījumā Gundara variants, vai v3rb0...

  2. 2 cucumber

    Spriežot pēc taviem jautājumiem, tev lasīt, lasīt un vēlreiz lasīt...

    Tā kā oop ir paradigma, tad tās apgūšana prasa sistemātiskas zināšanas, un tās var iegūt tikai no grāmatām. Forums var tik palīdzēt kāda konkrēta jautājuma atrisināšanā... Bez tam tu slikti lasi arī forumā teikto. tiku tak rakstījis:

    Un protams, visām klases īpašībām jābūt definētām, un, vēlams, arī dokumentētām.

    Un rezultātā tu atkal piedāvā koda gabalu ar mistiskiem, nedefinētiem variabļiem... Tas, ka to var izarīt, ir php bugs. Aizmirsti to, un atceries, ka visiem klases variabļiem ir jābūt definētiem!

    Piem ir verts uzrakstits klasi, kas uztaisa formu(input submit utt), un ari valide datus ?

    Klasi, kas validē datus ir vērts uzrakstīt. Tik labs validātors tev vienā klasē diez vai sanāks. Saproti, ka iekš oop parasti izdala klases priekšmetu modelim (Domain Model), biznesa loģikai u.t.t Datu validēšana jāsadala loģiskās vienībās un atbilstoši jātaisa klase katrai šai vienībai. To ir grūti divos vārdos aprakstīt, tāpēc tomēr izbrīvē savu ļoti aizņemto laiku, un palasi nopietni kādu grāmatiņu par oop un design patterns...

     

    p.s. arī v3rb0 ieteikums varētu būt vērā ņemams :)

  3. 2 cucumber

    Ja gribi rakstīt oop, pieradinies uzreiz pie oop paradigmas lietošanas. Vēlams rakstīt iekš php5, lietot "redzamības" deklarācijas - public, protected, private. Tāpat vēlams ievērot, ka bez ļoti īpašas vajadzības pieeja pie objekta īpašībām notiek tikai caur atbilstošām metodēm. Inkapsulācija saucās, un ir viens no oop pamatpostulātiem. Un protams, visām klases īpašībām jābūt definētām, un, vēlams, arī dokumentētām. Tas, ka var bez deklarācijas piešķirt vērtību kādam variablim nenozīmē, ka tā ir jādara. Pie sarežģītākām klasēm pats sajuksi savos variabļos, un pazaudēsi visas oop priekšrocības.

    Pareizi tava klasīte vajadzētu izskatīties kaut kā tā:

    class GetFile
    {
     /**
      * path to file
      * @access private
      * @var string
      */
     private $path;
    ...
    
     public function setPath($path)
     {
    $this->path = $path;	
     }
    ....
    }

    2w3rb0

    tāpēc ka tā ir fīča

    Nu vismaz smailu būtu pielicis :) Fīča = dokumentēts bugs. Cerams, ka 6 versijā šīs "fīčas" vairs nebūs, un viņa lamāsies par šādu stilu...

  4. Tieši tāpēc :) Taisi visu to ar inclūdēm lieliem texta gabaliem, un kaut kādu translatoru priekš interfeisa elementiem. Par interfeisa tulkošanu te kaut kur bija topiks, pameklē... Idejai, ērti to darīt ar heša palīdzību... un viss ies caur vienu failu index.php.

    Vai arī dublē valodas izvēlni visos failos...

  5. Nu dievs ar viņu, kas ir java :) Lai iemācītos oop ir dziļi vienalga, kādā valodā to dara, lai tik tā normāli oop atbalsta. Un php5 to dara pilnīgi pieklājīgā līmenī. Oop tomēr ir domāšanas veids, nevis kādu specifisku "oop funkciju" zināšana :)

    Un pāris klasīšu izmantošana iekš visumā procedurāla koda nav oop. Tas iesākumam, protams ir jauki, jo ļauj kaut kādas lietas staipīt līdzi pa visiem saviem skriptiem, bet ne vairāk...

    Kas attiecas uz klasi GetFile... Tādā izskatā viņa ir bezjēdzīga, jo aizvieto vienkāršu funkciju fopen(), kas tikai sarežģī visu pasākumu. Jēga būtu, ja tev failā glabājas kādi strukturēti dati, pie kuriem jātiek klāt/jāmaina/jāsaglabā. Tad labi būtu rakstīt klasīti speciāli šī faila datu apstrādei. Tipa tā (pielietot):

    // atveram failu, izparsejam datus
    $myFileContentHandler = new FileContentHandler($filePath);
    
    // dabunam kaut kadu datu porciju
    $head = $myFileContentHandler->getHeader();
    
    // izmainam virsrakstu
    $myFileContentHandler->setHeader($newHeader);
    
    // saglabajam izmainas
    $myFileContentHandler->save();

    Šāda klase būtu paredzēta konkrēta tipa datu apstrādei, un iekļautu sevī visu ar to saistīto loģiku. Piemēram, ja tev tajos failos glabātos kaut kādi ziņojumi, tad tu visu šo ziņojumu apstrādes darbu veiktu caur šo klasi, nerūpējoties par zema līmeņa funkcijām darbam ar filesistēmu un datu izpārsēšanu... Parasti to dara ar datubāzē glabājamiem datiem... Lasi "design patterns" un citu iepriekš pieminēto literatūru. Skaidrāks kļūs

  6. Nu, patiesībā gan iekš php var rakstīt ne mazāk nopietnas sistēmas, kā ar javu. Tas, diemžēl, ir izplatīts malds, ka php ir nenopietna valoda, ko uztur kā reizi "echo koderi"... :)

  7. un kas tev šitas ira?

    <select OnChange="Update();" name="size">
    <option value="0" selected>Pilns izmers</option>
    	<option value="0" selected>Mazais izmers</option>
    </select>

    Un kā tas iet kopā ar šito?

    if (size == 1)
    {
    	width = 277;
    	height = 63;
    }
    
    if (size == 2)
    {
    	width = 450;
    	height = 34;
    }
    
    if (size == 3)
    {
    	width = 149;
    	height = 29;
    }

  8. Klau, varbūt pietiks bombardēt mūs ar milzu palagiem, par kuru darbību pats galīgi neko nezini? Un, kāds, interesanti, jautājums? Izstāstīt tev, kā viņš dabojas? :D

  9. Nu, jā, kļūda drīzāk bija iekš variabļu redzamības apgabalu saprašanas :) T.b. ja tu inicializē variabli funkcijā, tas ir pieejams tikai šajā funkcijā. Piemērs zemāk nestrādās:

    function init_var() {
    $var = "kaut kas te";
    }
    init_var();
    echo $var;

    Lai tiktu pie tā variabļa klāt ārpus funkcijas, viņu vajag atgriezt (return):

    function init_var() {
    $var = "kaut kas te";
    return($var);
    }
    $var = init_var();
    echo $var;

    Tavā gadījumā tā bija ar $connection :)

  10. Nu, bet kur tad tu to $connection priekš mysql_close() dabū? Tev tak funkcija piesledzamies_db() neko neatgriež ;) Ja gribi tik smalki, tad saņem no piesledzamies_db() to $connection, glabā viņu visā procesa garumā, un tad closē viņu. Tak, ja tu netaisi vairāk per vienu konekciju, var vienkārši mysql_close() bez argumentiem. Viņš pats sapratīs, kura conekcija jāaiztaisa. Kaut īsti smuki tas nav...

     

    p.s. Redz, te būtu viens labums no oop un singletone pattern :) Būtu pilnīgi pārliecināts, ka konekcija tik viena...

  11. includojamos failos, imho, nevajag likt neko tādu, kas kaut kādu outputu var dot, vai kā citādi izpildīties. To biš, funkciju libus tik vai klases. Tad ar nav lielu problēmu ar nesankcionētu include. Nu un paranojas nomierināšanai augstāk minēto... :)

    Nu, no paranojas viedokļa smukāk būtu:

    if(!defined('IS_OK')) {

    header('Location:blahost.lv');

    exit;

    }

  12. Jā, tabuliņa interesanta. Jāpāriet atpakaļ uz perl (tie daudz neatpaliek no java) :) Bet aldziņas ar vietējām salīdzināt nevar - te kādam paprasīt tādu, tak infarkts šo ķers :)

  13. A priekš kam tik dīvains regex?

    $str = '<font>sunc</font> <b>kakis</b>';
    $str = preg_replace('/<.*?>/','',$str);

    Jā, un pie pirmā, suni un vardi. Korekti būtu šitā:

    /(sun)(.*?)(varde)/s

    Pretējā gadījumā, viņš tev tekstā atradīs pirmo "sun" un pēdējo "varde", un aizvāks visu pa vidu, neskatoties uz to , ka tev tur ir vēl "sun" un "varde". T.b. teksts "some text sun text to remove varde some text sun text to remove varde some text" tev kļūs par "some text sunvarde some text" , nevis gaidīto "some text sunvarde some text sunvarde some text" .

  14. 2v3rb0

    Tev laikam kaut kāda nesavietojamība ar samsungiem ir ;) Vai latvijā tirgo kaut kādus brāķīgus... Man pašam bija 2 - dzīvo līdz šai dienai. Vienam jau gadi 10 drīz būs, otrs jaunāks bik. Un paziņām daudziem ir, un bez vainas iet. Imho, labākā attiecība cena/kvalitāte.

     

    Priekš kodešanas laikam lcd - acis mazāk gurs...

  15. Nu bez prāta rakstot gan pilnīgi vienalga, kā rakstīt. He,he ;)

    Par hash var teikt, ka ne vienmēr ērti - man patīk ar $_REQUEST strādāt caur objektu. Nekontrolējami echo pa vidu oop`am ar nav īsti labi. Parasti visu outputu buferēju, un tad ar templates parseri maucu ārā. Bet te jau ir bijuši strīdi par šā nepieciešamību... Man patīk... savs, ne smarty ;)

    Nu, zināms off ne par tēmu sanāk.

  16. Nu, tad jau laikam tomēr šitā:

    <?php
    switch($_POST['meklis']) {
    case 'cls':
    	header("Location: index.php");
    	break;
    case 'dir':
    	header("Location: dir.php");
    	break;
    case 'par.exe':
    	header("Location: par.php");
    	break;
    case 'palidziba.bat':
    	header("Location: help.php");
    	break;
    case 'urlas.exe':
    	header("Location: urlas.php");
    	break;
    }
    ?>

×
×
  • Create New...