Zend වලින් Hello World

මුලින්ම Zend එක බාගන්න ඕනෙ. ඕකෙ Full එක ඕනෙ නෑ Minimal එක බා ගත්තාම ඇති. (උන් නම් කියනවා Full එක තමා හොද කියලා. ඇති වැඩක් නෑ. අපිට ඕන ටික අරකෙ ඒහෙමම්ම තියෙනවා.)

ඒක විහිදුවා ගන්න
$tar xvfz ZendFramework-1.11.3.tar.gz 
Zend එක ඒකෙ freamwork එක විතරක් පාවිච්චි කරලා අතින් ඔක්කොම ලිපි ලේඛණ ගොනු හදාගෙන පාවිච්චි කරන්න පුලුවන්. ඕවා ඔක්කොම අතින් හදනවට වඩා ලේසියි Zend ලා දීලා තියෙන විධාන වලින් වැඩේ ගොඩ දාන එක. මුල ටික විධාන වලින් කරන එක තමා ලේසි. පස්සෙ අතින් හදන එක ලේසියි.

විධාන භාවිතා කරන්න ZendFramework-1.11.3/bin/ එක ඇතුලෙ තියෙන zf.sh ලේඛණයට alias එකක් හදා ගන්න. (Windows වලට zf.bat එක පාවිචචි කරන්න තියෙන්නෙ. මම මේ කියන්නෙ Linux වලට හරියන්න)
$alias zf=/home/dinuka/workspace/ZendFramework-1.11.3/bin/zf.sh
වැඩේ හරිද කියලා බලන්න zf කියලා ගහලා බලන්න. එත්කොට හෙන හෑල්ලක් ඒවි. ඒකෙ තියෙන්නෙ පාවිච්චි කරන්න පුලුවන් විධාන.

දැන් ඕනෙ තැනකට ගිහිල්ලා වෘපෘතියක් හදන්න.
$zf create project test
එතකොට test කියලා ගොනුවක් හැදිලා තියෙන බව පෙනේවි. ඒකෙ ඇතුලෙ පහත පරිදි ගොනු හා ලේඛණ සැකසී ඇති ආකාරය දක්නට පුලුවන්.
test
|-- application
|   |-- Bootstrap.php
|   |-- configs
|   |   `-- application.ini
|   |-- controllers
|   |   |-- ErrorController.php
|   |   `-- IndexController.php
|   |-- models
|   `-- views
|       |-- helpers
|       `-- scripts
|           |-- error
|           |   `-- error.phtml
|           `-- index
|               `-- index.phtml
|-- library
|-- public
|   |-- .htaccess
|   `-- index.php
`-- tests
    |-- application
    |   `-- bootstrap.php
    |-- library
    |   `-- bootstrap.php
    `-- phpunit.xml
මේවා තේරුන් ගන්න කලින් මේක වැඩ කරනවාද බලලා හිටියනම් හරි. ඒකට ඕකෙ library කියල ගොනුවට අපි බා ගත්ත එකෙ තියෙන Zend libraries ටික දාගන්න ඕනෙ. ඒකට ඕනෙ නම් link එකක් දෙන්නත් පුලුවන්. වැඩිය හොදයි කොපි කරන එක.
$cp -r ZendFramework-1.11.3/library/Zend/ test/library/
දැන් ඉතින් වෙබ් බව්සරයෙ ටැබ් එකක් විවෘත කරගෙන localhost:4000/test/public කියන එක ගහලා බලන්න. මගේ එකේ නම් ඔය විදිහට. පොඩ්ඩක් හිතලා බලලා url එක තෝර ගන්න. කොහොම හරි public එකට තමා දෙන්න ඕනෙ. ඕනෙ නම් කෙලින්ම public එකටම VirtualHost එකක් හදා ගන්න. (මේක බලන්න)

බඩු වැඩ නම් Zend පින්තුරයක් එනවා. අන්තර්ජාලය හරියට වැඩ කලොත් හරියට එනවා. නැත්නම් මොනා හරි විකාරයක් වත් ඒවි. ආවෙ නැත්නම් ආයෙ VirtualHost එක හදන තැන ඉදන්ම මේකෙ පාඩම් කියවන්න. ඒක හරිගියෙ නැත්නම් මෙතනින් එහාට බලන්න එපා.

මේකෙ සීන් එක කෙටියෙන් මෙහෙමයි.

ඔය tests කියන ගොනුව ගැන හිතන්නම ඕනෙ නෑ. library එකේ තමා අපිට ඕන Zend library වගේ library දාන්නෙ. මතකනේ. මුල්න්ම වැඩ කරන්නෙ public එක ඇතුලෙ තියෙන index.php එක. ඒක application/configs/application.ini එකෙන් Bootstrap.php, Zend library එහෙම පාවිචිච කරලා controllers වලට ගිහිල්ලා IndexController.php එකේ init එකයි indexAction එකයි run කරනවා. indexAction එක වැඩ කරනකොට ඒකට අදාල view එක වැඩ කරනවා. ඒ අනුව application/views/scripts/index/index.phtml එක වැඩ කරනවා. අපිට ඉස්සල්ලා පින්තූරය පෙන්වන්නෙ ඔය index.phtml එකෙන්. ඒකෙ තියෙන ඕක්කොම මකලා දාලා තමන්ගෙ කියලා මොනා හරි ගහන්න.

උදා:- Hello World

ඔන්න ඔහොමයි Zend වලින් Hello World ගහන්නෙ.

අවවාදයයි - වැඩ සිද්ද වෙන්නෙ මම කිව්ව පිලිවෙලට තමා. ඒක ඒ විදිහට වෙන්නෙ කොහොමද කියලා ඔය file විවෘත කරගෙන කට්ට කාලා Zend එපා කරගන්න එපා. ඒවා Zend කරලා දේවි. ඔවෑයෙන් මතක තියාගතයුතු වැදගත්ම කාරනය හැම Action එකකටම අදාලව ඒ නමින් .phtml එකක් views/scripts වල අදාල contorller එකෙ නමින් තිබෙන ගොනුවක තියෙන්න ඕනෙ(View වෙන්න දෙයක් තියෙනවා නම් තමා ඕනි. එහෙම නැති ඒවා වැඩ පාරක් දාලා හදන්නෙ නැතුව ඉන්ට පුලුවන්. ). Action එක වැඩ කරනවා කියලා පෙන්වන්නෙ ඔය .phtml එකෙන් තමා. නම් භාවිතයේදි පරිස්සම් වෙන්න. මොකද Zend වල නම් වලින් තමා file එක තියෙන තැන හොයන්නෙ.

ප.ලි - මෙය පසුව සංස්කරනය කරන ලදී. 

4 comments:

  1. පුදපු ගමන් කාපි යකා කිව්වලු. ඕං මට වෙච්ච හරිය...

    මුලින්ම ඕන බාගත ගැනීම කරන්න කලින් Zend account එකක් තියෙන්න ඕන. ඔන්න ඒක හදා ගත්තා කියමුකො. පස්සෙ බාගෙන දිග ඇරගත්තා. ඔන්න alias එකත් දුන්නා. හැබැයි zf terminal එකේ type කරාම පහල error එක දුන්නා.

    /home/anuja/Documents/zend/ZendFramework-1.11.6-minimal/bin/zf.sh: 44: php: not found

    ඉන්පස්සෙ පොඩ්ඩක් Google සරණං ගච්චාමි උනාම දැන ගත්තා PHP කොච්චර අළුත් version එකක් install කරල තිබ්බත් terminal එකෙන් php5-cli install කරල නැත්තම් වැඩ කරන්න බෑ කියල. ඔන්න ඉතින් sudo apt-get install php5-cli දුන්න කියමුකො. උන් කියනවා;

    Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

    මුලින් බැලුවා --fix-missing එක වැඩද කියල. ඔන්න කියන දේ;

    Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/p/php5/php5-cli_5.2.6.dfsg.1-3ubuntu4.6_i386.deb 404 Not Found [IP: 91.189.88.46 80]

    ඊට පස්සෙ බැලුව update එකක් ගහල. එතකොට මෙහෙම කියනවා;

    Some index files failed to download, they have been ignored, or old ones used instead.

    පස්සෙ පොඩ්ඩක් හිතල බැලුවම මම තාම use කරන්නෙ Ubuntu 9.04 කියල මතක් උනා. ඒත් පරණ දේවල් වලට මේ තරම් කැතට සළකනවා කියල හිතුවෙ නෑ ;-(
    ආ... තව දෙයක් කරන්න බැලුවා. ඒතමයි schoolnet mirror එක Synaptic එකට දාගන්න පුළුවන්ද කියල. හි...හි... එතකොට තමයි දැක්කෙ මේ version එකේ Sri Lanka කියල එකක් නෑ කියලා. අද ඇති කියල හිතුනා. කාලඟ හරි විසඳුමක් තියෙනවනම් මටත් කියන්න.

    ReplyDelete
  2. සෙන්ඩ්වල ඔය එර්ර් එක එනවා කියලා මටත් කීපදෙනෙක්ම කිව්වා. සමහර විට php5-cli නැති නිසා වෙන්න ඇති. ඔයාගෙ තියෙන්නෙ උබුන්ටු වර්ශන් එකේ අවුලක්. දැන් 9.04 වලට උබුන්ටු සපොර්ට් කරන්නෙ නෑ. ඒකයි අප්ඩේට් නැත්තෙ. ඒ පැකේජ් එක වෙනම බාලා දාලා බලන්න. සමහර විට හරි යයි. මම ලින්ක් එක දාන්නම්. වඩාම සුදුසු අලුත් එක උබුන්ටු දාන එක. අඩුම ගානෙ 10.04 වත් දාන්න. නැත්නම් 11.04 දාන්න.

    http://packages.debian.org/sid/php5-cli

    ස්තුතියි - මේකෙ පලවෙනි කමෙන්ට් එක

    ReplyDelete
  3. How can I do the single row selection in MVC Model

    ReplyDelete
  4. This is my FetchAll()

    public function getAllAddresses()
    {
    $dbTable = new Application_Model_DbTable_User();
    $result = $dbTable->fetchAll();

    $addresses = array();
    foreach ($result as $row) {

    $address = new Application_Model_User();
    $address->setuserId($row->userId)
    ->setuserName($row->userName)
    ->setaddressLine1($row->addressLine1)
    ->setaddressLine2($row->addressLine2)
    ->setaddressLine3($row->addressLine3)
    ->settelephone($row->telephone);

    $addresses[$row->userId] = $address;
    }

    return $addresses;
    }

    All I want is to select a specific row

    public function getTheAddress()
    {
    }

    ReplyDelete