NePo
Sausis 21, 2008

Norit PHP sudėtingai?

Aš visuomet sakiau, tokia lengva kalba, kad ją gali išmokti bet kas. Norint parašyti skriptą kalba nereikia nei talento, nei daug žinių. Tačiau duokit talentingiems žmonės lengvą dalyką ir jie pavers sudėtingu. Apie ką aš kalbu? Apie .

Kiek iš jūsų yra girdėję apie Ruby on Rails? Manyčiau daugelis, apie RoR yra ne vienas straipsnis Pixel.lt. O kiek iš jūsų yra girdėję apie ? Nedaug, ir tai nieko keisto, nes straipsnio rašymo metu oficialiai išleista tik 1.0.3 versija.
Ruby on Rails yra nuostabus, žmogus net neturėdamas programavimo žinių gali sukurti svetainę per tris naktis. Nekeista, kad atsiradus RoR susvyravo pozicijos ir daugelis programuotojų susimąstė, galbūt vertėtų keisti programavimo kalbą. Kam rašyti be reikalo daug kodo, jeigu jis jau parašytas? Panašiai mąsčiau ir aš, tuomet išgirdau, kad bando su padaryti tai, ką RoR padarė su Ruby ir pagalvojau: Valio, nebereikės rašyti daug sudėtingo kodo.
Kadangi esu parašęs Mano pirmoji Ruby on Rails programa, tai pamaniau, kad taip pat būtų šaunu parašyti Mano pirmoji programa. Tačiau, tik parsisiuntęs supratau, kad to nepadarysiu. Kodėl? Skaitykit toliau.

Norint dirbti su jums reikės:

  • daug praktinio programvimo žinių;
  • praktinio supratimo kas yra OOP;
  • supratimo kas yra ir su kuo jis valgomas.

Paguosti galiu nebent tuo, kad apie visus šiuos dalykus Pixel.lt jau rašė.

Išgąsdinau? Vis tik pabandysim kartu sukurti ką nors panašaus į puslapį su , kuriant aš iškelsiu daug klausimų, tačiau greičiausiai ne į visus galėsiu atsakyti dabar, kadangi aš iš karto rašau straipsnį, programuoju pirmą programą ir skaitau dokumentaciją.

Pradėkim nuo parsisiuntimo (spausti čia). Sekantis žingsnis pasitikrinti ar teisingai sukonfigūruotas Apache. Kadangi palaiko draugiškus adresus, todėl Apache konfigūracijoje reikia pakeisti:

LoadModule rewrite_module modules/mod_rewrite.so
# standartinėje konfigūracijoje šis modulis būna išjungtas.

AllowOverride All
# standartinėje konfigūracijoje būna None

Jeigu darysite pakeitimus Apache, nepamirškite vėliau išsaugoję konfigūracinį failą, jį perkrauti.

Kad žinotume ką norime toliau daryti, reikia susigalvoti užduotį. Aš paimsiu tą pačią užduotį kaip ir straipsnyje Mano pirmoji Ruby on Rails programa.
Užduotis. Sukurti užrašų knygutę, kurios užrašus galėtų peržiūrėti bet kas, tačiau rašyti, redaguoti tik aš.

Pirmiausiai susikuriu katalogą notebook. Į jį persikopijuoju Zend direktoriją iš archyvo (Pastaba: direktorijos demos ir tests) manęs visai nedomina.
Iš karto kylą klausimas, kokia turi būti projekto struktūra? priešingai nei RoR nesugeneruoja direktorijų struktūros (pataisykit, jeigu klystu). Zend dokumentacijoje radau tokią projekto struktūrą:

docroot/
    index.
application/
    default/
        controllers/
            IndexController.
            FooController.
        models/
        views/
            scripts/
                index/
                foo/
            helpers/
            filters/
    blog/
        controllers/
            IndexController.
        models/
        views/
            scripts/
                index/
            helpers/
            filters/
    news/
        controllers/
            IndexController.
            ListController.
        models/
        views/
            scripts/
                index/
                list/
            helpers/
            filters/

Viename projekte, kurį parsisiunčiau patyrinėjimui, radau truputėlį kitokią struktūrą:

zf-tutorial/
     /application
          /controllers
          /models
          /views
              /filters
              /helpers
              /scripts
    /library
    /public
        /images
       /scripts
       /styles

Aš nusprendžiau naudoti antrąjį variantą. Gal kas turit geresnį pasiūlymą?

Pagrindinėje direktorijoje susikuriu .htaccess failą:

RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css|)$ index.

Šie įrašai reiškia, kad visus failus išskyrus nurodytus nukreipti į index..
Ką daryti toliau? Skaityti dokumentaciją.
Pasirodo, kad Zend supranta dvieju tipų konfigūracinius failus XML ir INI. Mano smegenys tokių konfigūracinių failų nepriima, formatai kurie nėra interpretuojami man atrodo nesaugūs, todėl aš pasirinkau tipo konfigūracinį failą, nors jo nėra standartinėje ekipuotėje, bet pabandysiu apgauti .
Atsidarau application katalogą ir sukuriu config. failą:

return array(
    'webhost'  => 'localhost/notebook',
    'database' => array(
        'adapter' => 'pdo_mysql',
        'params'  => array(
            'host'     => 'localhost',
            'username' => 'vartotojas',
            'password' => 'slaptazodis',
            'dbname'   => 'duombaze'
        )
    )
'prefix' => 'demo'
);

Dabar grįžkime į šakinį katalogą ir susikurkime index. failą:

error_reporting(E_ALL|E_STRICT);
 
set_include_path('.' . PATH_SEPARATOR . './library/'
	 . PATH_SEPARATOR . './application/models/'
	 . PATH_SEPARATOR . './application/lib/'
	 . PATH_SEPARATOR . get_include_path());

Reikia nustatyti, kur Zend turi ieškoti failų. Jeigu nenorite nustatinėti kelių, reiktų pasidomėti standartine programos struktūra.

include "Zend/Loader.php";
 
Zend_Loader::loadClass('Zend_Controller_Front');
Zend_Loader::loadClass('Zend_Registry');
Zend_Loader::loadClass('Zend_View');
Zend_Loader::loadClass('Zend_Db');
Zend_Loader::loadClass('Zend_Db_Table');
Zend_Loader::loadClass('Zend_Debug');
Zend_Loader::loadClass('Zend_Auth');

Toliau įtraukiame Loader., kuris užkrauna reikiamas bibliotekas. Zend_Controller_Front - pagrindinis kontroleris, per kurį eis visa informacija. Zend_Registry - skirtas saugoti informacijai kuri naudojama visoje programoje. Zend_View, manau, visi puikiai gali suprasti, jog ši biblioteka tvarkosi su views, V raide iš derinio . Zend_Db ir Zend_Db_Table naudojamos darbui su duomenų baze bei lentelėmis. Zend_Debug šita klasė turėtų padėti mums greičiau surasti klaidas, pažiūrėsim, ar iš tiesų. Zend_Auth - kadangi ruošėmės kurti sistemą su prisijungimu, tai mums reikalinga prisijungimo informaciją tvarkanti klasė.

$config = new Zend_Config(require 'application/config.php');
 
$db = Zend_Db::factory($config->database->adapter, 
        $config->database->params->toArray());
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('db', $db);

Šios eilutės užkrauna prisijungimų prie duomenų bazės konfigūraciją, prisijungia prie duomenų bazės ir išsaugo informaciją tolesniam naudojimui.

$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setControllerDirectory('./application/controllers');
 
// run!
$frontController->dispatch();

Tai paskutinės index. failo eilutės, kurios kreipiasi į pagrindinį valdiklį ir liepia mūsų sukurtai programai veikti. Tiesa, jūs nieko nepamatysit, nes kol kas mes nesukūrėm nė vieno vaizdo, nė vieno valdiklio, nė vieno modelio.
Pats laikas tai būtų padaryti, bet prieš tai susikurkime porą lentelių:
pirmiausia lentelę, kurioje saugosim užrašus:

CREATE TABLE `demo_notes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL DEFAULT '',
`story` text NOT NULL,
`created_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY  (`id`)
);

Na, ir vartotojų lentelę

CREATE TABLE demo_users (
id int(11) NOT NULL AUTO_INCREMENT,
login varchar(80) DEFAULT NULL,
password varchar(40) DEFAULT NULL,
PRIMARY KEY  (id)
);

Norint pamatyti, ar kas nors veikia pirmiausiai reikia įsivesti keletą duomenų rankiniu būdu, manau, tą sugebėsit padaryti ir be mano komentarų.
Laikas vėl parašyti šiek tiek kodo, einame i direktoriją application\controllers ir susikuriame failą IndexController.. Visų valdiklių pavadinimai turi baigtis žodžiu Controller.

class IndexController extends Zend_Controller_Action
{
 
function indexAction()
    {
        $view = new Zend_View();
        $view->setScriptPath('application\views\scripts\index');
        $view->render('index.phtml');
    }	
 
}// end of class

indexAction() - tai veiksmas, kuris bus atliktas kreipiantis į pagrindinį valdiklį. Šiuo atveju tiesiog atvaizduojamas pagrindinis vaizdo failas, kurį mes tuoj pat ir susikursime. Atkreipkite dėmesį, jog visi veiksmai turi baigtis žodžiu Action.
Vaizdo failai standartiškai saugomi phtml formate. Mums reikia nueiti į application\views\scripts direktoriją ir joje susikurti direktoriją index, kurioje bus saugomi visi pagrindinio valdiklio vaizdo failai.
Kol kas mano index.phtml turinys bus :

echo 'Labas pasauli!';

Šaunu, pamatėm, kad viskas veikia dabar būtų neblogai prisijungti prie duombazės ir atvaizduoti šiek tiek duomenų. Kad tą padaryti turime susikurti pirmą modelį. Nueiname į direktoriją application\models ir susikuriame failą Notes.

class Notes extends Zend_Db_Table
{
    protected $_name = 'demo_notes';
}

Dabar grįžkime į pagrindinio valdiklio funkciją IndexAction ir papildykime ją…
Duomenų atvaizdavimas nėra sudėtingas. Bet teko daug dokumentų perskaityti ir ankstesnį, IndexAcion kodą pakeičiame į:

function indexAction()
    {
	$this->initView();
	Zend_Loader::loadClass('Notes');
	$note = new Notes();
     	$this->view->note = $note->fetchAll();
 
    }

Taip pat reiks pakeisti ir index.phml kodą:

<table>
<?php foreach($this->note as $note) : ?>
<tr>
	<td><?php echo $this->escape($note->title);?></td>
	<td><?php echo $this->escape($note->story);?></td>
</tr>
<?php endforeach; ?>
</table>

Dabar galim paploti sau. Pagaliau atvaizdavom duomenis iš duomenų bazės. Realiai parašėm vos kelias kodo eilutes, tačiau tam aš sugaišau daugiau nei tris valandas.

Pirmieji įspūdžiai

Tas, kuris sakė, kad panašus į Ruby on Rails, mažų mažiausiai nematė, bent vieno iš šių dviejų dalykų (labai tikėtina, kad abiejų). Kita vertus, kodo parašyti reikėjo ne tiek ir daug, tiesiog naujokui pradėti gana sudėtingas dalykas. Artimiausiu metu pasitengsiu užbaigti kurti šitą užduotėlę ir papasakosiu jums, kaip sukurti prisijungimą.

Panašūs straipsniai


“Norit PHP sudėtingai?” komentarų: 25

  1. Artūras Šlajus

    Vajė, kiek čia visko daug ir kaip čia viskas nepatogu :(

  2. shar

    Man viskas atrodo gan gražiai, ypač kai lietuviškai parašyta tai gali straipsnį skaityt kaip pasaką. Gal naujokams ir sunkiau perprasti Zend Framework, bet manau išsiaiškinus ir pasinagrinėjus tikrai butų smagu jį naudoti…

  3. Eimantas

    Nė vienas klonas nėra tiek pat geras, kaip pats originalas (RoR => ZF). Tą patį bandė daryti ir CakePHP.

    Galėtum parašyti kaip ten reikalai su įskiepiais, nes prisijungimas su ZF man buvo tikras skausmas. 24 eilutės kodo vien užklausai pagal duotus parametrus, tiesa, čia pagal tutorialą pardinukams.

    Na nežinau, man ZF yra didelis didelis. Tiesa, RoR trūkumas (bent Lietuvoje) - mažai hostingo sprendimų ir tiek.

  4. asterisk

    ir aš, tuomet išgirdau, kad Zend Framework bando su PHP padaryti tai, ką RoR padarė su Ruby
    - Nepo

    Kur išgirdai ? Oficialiuose šaltiniuose apie tai tikrai nemačiau. RoR ir ZF žiauriai skiriasi.

    MVC projekto struktūrą iškarto sugeneruoti galima pasitelkus Zend Neon pagalba. :)
    Zend pasižymi vienu privalumu (kai kam ir trūkumu). Tai nėra VIEN MVC karkasas. Tu gali daryti projektą includindamas tam tikras ZF dalis ir gali daryti remdamasis ZF pateikiamomis MVC galimybėmis. Todėl jis kolkas ir neturi pradinės sugeneruotos struktūros - tai paliekama tavo laisvei.

    Tą patį bandė daryti ir CakePHP
    - Eimantas

    Vat, CakePHP būtent bando perkelti RoR į PHP. Ir manau tai jiems palyginus neblogai sekasi. Žinoma su RoR nėra ką lyginti, bet juk šaunu kad bent jau kažkas daroma.

    Keep up the good work. Laukiam sekančių straipsnių.

  5. Sepa

    NePo, labai supykau ant tavęs. :D

    Aš vėl pakartosiu frazę (neatsimenu kieno), kurią kartoju šimtus kartų, bet dar kartą matau pakartosiu: “Jei sukursi daiktą, kuriuo galės naudotis ir kvailiai, tai tik kvailiai juo ir naudosis”.

    O dabar rimtai: NePo, matau, kad tu irgi nelabai matęs kažkurio iš tų dviejų dalykų. Vieną tu įvardini kaip super-duper paprastą (RoR) ir turbūt ten RoR tinklapyje taip ir parašyta ir taip yra, o apie kitą (ZF) tu išgirdai, kad jis yra bandymas padaryti kažką panašaus į RoR ant PHP. Aš dabar nueinu į framework.zend.com - ir galvoju ar tikrai ten taip parašyta. Randu štai ką:

    Extending the art & spirit of PHP, Zend Framework is based on simplicity, object-oriented best practices, corporate friendly licensing, and a rigorously tested agile codebase. Zend Framework is focused on building more secure, reliable, and modern Web 2.0 applications & web services, and consuming widely available APIs from leading vendors like Google, Amazon, Yahoo!, Flickr, as well as API providers and cataloguers like StrikeIron and ProgrammableWeb.

    Niekur nieko…

    Taigi, ką aš įžvelgiu straipsnio įžangoje ir išvadoje - nesusipratimą. Kodėl? Todėl, kad Zend Framework orientuotas į profesionalus ir profesionalius sprendimus.

    Ir “simplicity” visiškai nereiškia tokio kodo:

    pakol i.pasieks(10) vanok
    ant-ekrano ‘nekenčiu PHP’;
    gana

    :D Sarkazmas… Paprastumas profesionalui reiškia tai, kad jam nereikės krūvą kartų perrašinėt to paties, kad jam viskas bus išdėstyta patogioje struktūroje ir panašiai.

    Beje, Ruby ne pirma kalba, kuria kažką parašyti gali netgi nieko neišmanantis žmogus.

    Davai, prisiminkit LOGO vėžliuką, ten gi viskas tas pats. Ten gi viskas paprasta

    PIRMYN 10
    SUKIS 90
    PIRMYN 10
    SPALVA MELYNA
    t.t.

    Gal ne visai tiksliai, bet… Ruby man kažkuo į LOGO užneša.

    Ir galų gale, kas per daug paprasta - tas irgi nesveika.

    P.S. Dabar čia prasidės fleimas, bet mano išvada tokia - jeigu reikės aš programuosiu nors ir su asembleriu - svarbiausia, kad tai būtų patogu ir paprasta MAN, o ne kažkas taip TEIGTŲ.

    Ačiū už dėmėsį. ;-)

  6. Mindaugas

    Kartais kai kurie geek’ai bando pakeisti pasaulį (arba kažką įrodyti) neteisingom priemonem ar metodais.

    Daug nesiplėsiu, nes man čia primena amžinuosius karus tarp Linux ir MS.

    Tik trumpai: “stupid sells best”. Čia “stupid” != “simple”.. tokie yra rinkos poreikiai..

  7. Emilis

    Atsakymas antraštei: nenorim PHP sudėtingai.

    Pastaba Sepai: Logo yra Lisp variantas, Ruby kūrėją irgi įkvėpė Lisp. Todėl jos ir panašios.

  8. tamole

    3 valandos pirmai aplikacijai nėra daug. Zend Framework’as yra palaidų komponentų rinkinys ir nebūtina jų visų naudoti.

    “Norint dirbti su Zend Framework jums reikės: * daug PHP praktinio programvimo žinių; * praktinio supratimo kas yra OOP; * supratimo kas yra MVC ir su kuo jis valgomas.”

    Kadangi Zend Framework’as nėra mechanizmas, kuris automatiškai veikia, o tiesiog duoda komponentus, kuriuos susiklijuoti pačiam tenka, tai ganėtinai suprantama, kad php žinių reikia. Bet kam php programuotojams įrankis, kuriam valdyti nereikalingos php žinios?

    Objektinis programavimas - PHP5 atnešė nemažai naujų galimybių ir Zend Framework’as bando jas išnaudoti. Kuo blogai?

    Supratimas apie MVC visiškai nereikalingas. Gali drąsiai rašyt aplikaciją su visais Zend Framework komponentais išskyrus Zend_Controller. Niekas nedraudžia, niekas nesako, kaip tau ką daryt.

    P.S. Kuo tokia jau nesaugi XML/INI konfiguracija? Ir beje, kaip tu sugebėjai nerasti PHP konfiguracijos?

    http://framework.zend.com/manual/en/zend.config.html#zend.config.introduction

    Pats pirmas Zend_Config dokumentacijos pavyzdys demonstruoja, kaip naudoti konfiguraciją iš php masyvo.

  9. elt.lt » Blog Archive » Apžvalga. Šiandien aš skaičiau… #29

    […] Jei esate programuotojas arba domitės šios srities naujovėmis, NePo supažindins su ganėtinai šviežios technologijos „Ruby on Rails” galimybėmis… […]

  10. Tygas
  11. donatas

    Nelabai supratau straipsnio autoriaus verdikto. zudyti ZF ar pasigaileti. Pats asmeniskai naudoju ZF ir vargo nematau. viskas labai aisku, suprantama. su RoR nelyginsiu nes pastarojo nesu naudojes. sako kad cakePHP yra jam artimas. bandziau. nepatiko nes per daug viskas “susabloninta”. pavyzdziai “kaip iskepti app per 15min” atrodo grazus ir kabinantys taciau kai pradedi daryti sudetingiau prasideda sunkumai. ZF siuo atveju daug lengviau issisavinau. zinoma galima rasti ir nesuprantamu featuru. pvz dauguma validatoriu taciau niekas neliepia ju naudoti :)

  12. Nerijus

    Ponas autoriau, gal galetumete placiau pakomentuoti sita dali:
    “Pasirodo, kad Zend supranta dvieju tipų konfigūracinius failus XML ir INI. Mano smegenys tokių konfigūracinių failų nepriima, formatai kurie nėra interpretuojami man atrodo nesaugūs, ”
    ?

  13. Paulius Rimavičius

    Esu išbandęs visus rimčiausius PHP frameWorkus, todėl manau, kad galiu pasakyti savo nuomonę.

    CakePHP yra per daug RoR’iškas, t.y. nukopijuotos ir gerosios ir blogosios RoR savybės, taip tai neblogas frameWork’as, bet mano supratimu jam truksta lankstumo.

    ZF - tai Zend’o bandymas įšokti į nuvažiuojantį traukinį, deja nelabai sėkmingas. Nors klasių rinkinys tikrai vertas dėmesio.

    Symfony - apskritai tobulas daiktas. Be kita ko galima prisijungti ZF klases per ZF Bridge’ą, pajungimas tikrai gerai veikia, pats bandžiau.
    Tiesa norint išnaudoti gerasias Symfony savybes reikia didelių PHP žinių arba bent neeilinio intelekto.

    Žodžiu rimtiems projektams aš renkuosi Symfony.

  14. Tadas

    Na cia tu ir isgyrei Symfony, gal jis ir geras daiktas, bet tikrai ne tobulas ir pagrindinis jo minusas yra greitis kuom jis labai atsilieka nuo cakePHP ar codeIgniter. O siaip manau, kad prie betkurio frameworko reikia ilgai padirbeti tik tada isnaudosi jo visas galimybes.

  15. Vidmantas

    Sepa, man mažų mažiausiai keistas tavo šūkis “lengva = debilams”. Tai, typo, programuokim viską su assembleriu, - nes ir pats PHP buvo padarytas dėl tam tikrų patogumo ir paprastumo priežasčių. O juk tai ne g33k.

  16. Karolis

    To NePo:

    CakePHP, Zend Framework, Prado, Codeigniter ir t.t.
    norint padaryti HelloWorld(juk visi zino kas tai yra) aplikacija/scripta yra tikrai sudetingas dalykas, nei palyginus su echo “Hello World”;

    o kam, o kam, o kam?

    As ivardinciau CakePHP/ROR(ir jie tikrai nera panasus) i tokius framework, kurie orentuojaci i “hellowworld” ir siektiek daugiau web scriptu kurima, taciau sudetingi projektai realizuojami sunkiai. Kodel? Nes auto konfiguracija yra maximaliai isvystyta, lakstumo maziau. Aisku del lanskstumo yra ir blogesniu pavyzdziu kaip Prado ar Borland RAD framework.

    Jei nori paprastumo: rasyk echo “world”.

    Zend framework sukurtas vidutinems arba didialioms svetainems, todel naudingumas atsiranda tada, kai kuri sudetingesnene/prapleciama aplikacija.

    Sitas straipsnis klaidina ir trugdo vystytis web/php ir programavimo praktikoms Lietuvoje. Geriau jau ji istrintumet. Gaila, nes autorius nesuvokia apie ka raso. Sakau - echo “world”; Pradek skaiciuoti eilutes, koda ir “suprasi”, kad visi framework “blogi”.

  17. asterisk

    Karoli, prie ko čia echo “Hello world”; ? Šitas pavyzdys parodo kokia yra framework struktūra :) Faktas kad niekam nereikia frameworko kad išvestų labas pasauli. Bet tai yra standartinė pirmoji programa. Ir ją padarant visur sulygini kur kiek kaip ir ką reikia padaryt :)

  18. Karolis

    Cia neparodyta framework struktūra. Cia parodyta, jog plugn and play budu situo framework nepasinaudosi. Ir isreiksta visiskai nepagrysta kritika apie ji, lyginant su visai kitokio tipo framework’ais.

  19. NePo

    Brangus Karoli, tavo ar kitų išmanančių žmonių (kiek supratau Sepa irgi išmano) straipsnių nemačiau…
    Jeigu moki geriau, parašyk, pasidalink savo žiniomis.
    Pamatei klaida įvardink konkrečiai, pataisysim.
    Kritikuoti gali visi, bet dažniausiai kritikuoja tie kurie nieko nedaro ir nieko nežino :)
    O kam tenka kritika?
    Tie kurie sako, kad nugalėtojų niekas neteisia, stipriai klysta.

  20. neworld

    Internete ieškojau frameworkų benchamrkų, tačiau esu radęs tik senų versijų (http://paul-m-jones.com/?p=236), arba kur net nėra ZF (http://www.sellersrank.com/web-frameworks-benchmarking-results/).

  21. NightVisio

    Neblogas straipnis, bet su tais “sudėtingumais”, “nepatogumais” ir pan., tai juokinat… Kai rašai didelią sistemą ir nenaudoju objektinio programavimo, o tiesiog struktūrinį, tai iš tiesų kodas tampa žymiai sudėtingesnis, nes viskas tarsi susimala į krūvą. O kai naudoji OOP tai viskas tarsi suskirstoma / išskaidoma į savo dalis ir greitai galima susorientuoti kas, kur, ir kaip.. Ypač aiškiai matomas skirtumas, kai tarkim rašai kokią scripting language ant C ir C++… ( Na gal truputį ne į temą, bet norėjau išsireišt :-) )

  22. Emilis

    NePo == John C. Dvorak

  23. Zend framework - prisijungimas » Pixel.lt

    […] kaip sukurti sistemą su prisijungimu, tai ir pratęsiu savo pasakojimą pradėtą straipsnyje: Norit PHP sudėtingai?. Prieš pasakodamas toliau, norėčiau padėkoti visiems už protingus komentarus, ypač neworld […]

  24. Sepa

    Galėtų čia atsirasti komentarų prenumerata… Dabar skelsiu Vidmantui elektroninį antausį už šitą :) :

    Sepa, man mažų mažiausiai keistas tavo šūkis “lengva = debilams”. Tai, typo, programuokim viską su assembleriu, - nes ir pats PHP buvo padarytas dėl tam tikrų patogumo ir paprastumo priežasčių. O juk tai ne g33k.

    Vidmantai, kad programuokim asembleriu pasakei tu, aš sakiau - programuosiu nors ir asembleriu. Va kai prasideda interpretacijos tai gaunasi blogai. Ką aš norėjau pasakyti, kad šito straipsnio įžanga ir išvada yra nulinės vertės man.

    Aš niekada neimu rimtai/įvertinu nuliui ir t.t. ir pan. straipsnių, kuriuose kažkokie freimworkai maišomi su žeme, o kažkokie aukštinami kaip iš kitos visatos atėję. Palyginimus - irgi paskaitau, bet ne viską priimu. Aš renkuosi tai, kas man patogu. Aš orientuotas į profesionalizmą o ne grožinės literatūros rašymą Eclipse IDE lange (this was a sarkazm abaut ruby), todėl man ZF patogu ir tinka, kitiem natūralu, kad ne.

    Kas be ko, nėra man tas ZF kaip inkaras nugaroje įsmigęs, kaip kad gali pasirodyti. Norisi patyrinėti ir daugiau variantų: tarkim Symfony ir CodeIgniter. Gali sakyt, kad čia vėl PHP. Ok, pasižiūrėk kas yra Django arba TurboGears - uber kūl supa dupa Python freimworkai, kuriuos aš labai mylėčiau, jeigu rasčiau kur dažniau pritaikyti ir kur pahostinti jų projektus.

    Tai va, iš tiesų straipsnis tai šaunus kaip geras introductionas kaip padaryti pačią pradžią, bet tie vertinimai pradžioj ir pabaigoj… Sakau dar kartą - žmonės - žiūrėkit kas jum patogu, o ne kitus verskit naudoti kažką. :)

  25. Sepa

    Va, dar ir NePo atsakysiu, kur jis rašo:

    Brangus Karoli, tavo ar kitų išmanančių žmonių (kiek supratau Sepa irgi išmano) straipsnių nemačiau…
    Jeigu moki geriau, parašyk, pasidalink savo žiniomis.
    Pamatei klaida įvardink konkrečiai, pataisysim.
    Kritikuoti gali visi, bet dažniausiai kritikuoja tie kurie nieko nedaro ir nieko nežino :)
    O kam tenka kritika?
    Tie kurie sako, kad nugalėtojų niekas neteisia, stipriai klysta.

    Visų pirma dėl tos kritikos ir klaidų įvardinimų - NePo - aš tau konkrečiai įvardinau tavo klaidą - tu remiesi trečiųjų šalių pasakojimais ir nusišnekėjimais, kai teigi, kad ZF - tai RoR PHP kalba. Aš tau iš oficialaus straipsnio net pakopinau ZF aprašymą idėjinį. Nulis reakcijos iš tavo pusės… Nežinau nežinau…

    O dabar dėl to “patylėk, jei nieko nerašai geriau” papasakosiu realią istoriją įvykusią prieš keletą metų (jei tikitės, kažko apie programavimą tai galit baikt skaityt ties dvitaškiu, nes bus šiek tiek OFF-TOPIC čia):

    Kažkuriam Lietuvos mieste (tiksliai jau nepamenu) mirė kažkoks kukliai gyvenęs verslininkas. Pinigų jo šeima turėjo ne per daugiausiai, tad nuėjo į bažnyčią prašyti kunigo nuolaidos laidotuvėms. Kunigas sužinojęs, kas toks yra velionis, surengė laidotuves kaip “reikiant”: karstas - bažnyčioje (kas daroma labai retais atvejais), mišios už dyką (iš tiesų mišios už mirusijį - kainuoja), laidotuvės už dyką (ritualai per laidotuves taip pat kainuoja, jei kas nežino…) ir pan. Ir jei gerai pamenu, net karstą nupirko.

    Kažkas ne taip, ane? Pasirodo, velionis niekam nesigirdamas visą savo gyvenimą (na turbūt nuo tada kai pradėjo dirbti) aukodavo nemažas sumas klebonijai niekam nesigirdamas.

    O dabar prisiminkim hiltonus, turnerius, bransonus ir kitą grietinę - jie aukoja milijardus dorelių labdarai, juos žino visas pasaulis.

    Bet kai reikės savo pasturgalį kišt po velėna - kas bus svarbiausia: kas tu per žmogus ar kiek tu priaukojai (arba dar ir apsiskelbei paaukojęs - išvis garbėtroška)? Aš manau pirmas variantas.

    Istorijos moralas: kad mes su Karoliu straipsnių nerašom, tai nereiškia, kad jau visiškai nieko neišmanom ir rėkaujam čia bilen ką, kad tik tau blogiau būtų :D Visiškai ne, tiek aš tiek Karolis tau labai aiškiai ir konstruktyviai paaiškinom, kas tavo straipsnyje negerai. Savo pastabas parašiau šito komentaro viršuje, o Karolis manau aiškiai parašė, kodėl blogai yra lyginti freimworkus tarpusavyje.

    Taigis tiek ir žinių… Tikrai galėtumėt padaryt komentarų prenumeratą :)

Rašyti komentarą

Jūs privalote prisijungti jeigu norite rašyti komentarą.