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 එක තියෙන තැන හොයන්නෙ.

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

Apache වලින් Virtual Host

මන්‍යයෙන් වෙබ් සර්වරයේ Document Root ලෙස (XAMMP වල htdocs සහ WAMMP වල www මෙන්) ලිනක්ස් වල භාවිත කරන්නෙ /var/www ගොනුවයි. එය සදහා ප්‍රවෙශ පහසුකම් ඇත්තේත් root user ට පමණි. වෙබ් අඩවි නිර්මාණය කිරිම හා ඒවායේ වෙනස්කම් කිරීම root ලෙස ඇතුලත් වීමෙන් කිරිම අපහසුය. එම කරුණ සදහාත් තවත් බොහෝ කාරණා නිසාත් Document Root එක තමන්ට ප්‍රවේශ පහසුකම් තිබෙන තැනකට ගෙන යාම හෝ වෙබ් බ්‍රව්සරයේ Port එක වෙනස් කිරීම Virtual Host එකක් සාදා ගැනිම නම්වේ.

මේ සදහා /etc/apache2/sites-available/ යන ගොනුවේ ලේඛණයක් නිර්මාණය කල යුතුය. ප්‍රථමයෙන් එම ගොනුවට යන්න.
$cd /etc/apache2/sites-available/ 
(මේකෙ $ ලකුණ ඕනෙ නෑ. $ ලකුණ දාන්නෙ සාමාන්‍ය user කෙනෙක් විදිහට විධාන දෙන්න. # ලකුණ root user කෙනෙක් විදිහට විධාන දෙන්න. වැද්දොන්ට වගේ හැම දේම කියලා දෙන්න බෑ.)

එහි ඇති default යනු /var/www Documetn Root වන ලේඛණයයි. එය පහත ආකාරයෙන් වේ.
<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
දැන් ඉතින් කරන්න තියෙන්නෙ මේකෙ කොපියක් දාගෙන ඒකෙ /var/www තියන තැන් වලට අපිට ඕන ගොනුවක පාර දෙන එක තමා.

ඔක්කොටම කලින් sudo log වෙලා ඉන්න. නැත්නම් මලකෙලියයි.
$sudo su
කොපියක් දා ගැනීමට
#cp default work
එක සංස්කරණය කිරීමට
#vi work 
සමහර කෑලි අපිට ඕනෙ නෑ. ඒවා අයින් කරලා දාන්න පුලුවන්. ඕනෙම නම් error.log සහ access.log සදහා වෙනම ලේඛණ ලබා දෙන්න පුලුවන්. (එසේ ලබාදෙනවානම් අදාල ලේඛණ /var/log/apache2/ ගොනුවේ සාදා දෙන්න.)
Listen 2500
<VirtualHost *:2500>
        ServerAdmin webmaster@localhost

        DocumentRoot /home/dinuka/workspace
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /home/dinuka/workspace>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>
මම මේක සකස් කලේ Zend වලට අවශ්‍ය ආකාරයටය. සාමාන්‍යයෙන් Eclipse භාවිතා කරන විට එහි default workspace එක සෑදෙන්නෙ තම home folder එකේය. එහි පාර /home/dinuka/workspace ලෙසින් වේ. AllowOverride All ලෙස සැකසීම අත්‍යාවශ්‍යය. (ඒයින් වෙන්නෙ මොනවාදැයි මම නොදනිමි.)
a2ensite work
මෙසේ සකසා ගත් ලේඛණය ඇතුලත් Apache සදහා ඇතුලත් කිරීමට පහත විධානය ලබා දෙන්න.
#a2ensite work
Zend සදහා Apache වල rewrite මොඩුලය enable කල යුතුය. (ඒ ඇයි? මම නොදනිමි.) ඒ සදහා
#a2enmod rewrite
හරි. දැන් Apache නැවත අරඹන්න.
#/etc/init.d/apache2 restart
එහෙනම් ඔක්කොම හරි. දැන් වෙබ්බ්‍රව්සරයේ http://localhost:2500 ලෙස සටහන් කර බලන්න. වැඩ නැත්නම් ඔබ දුන් Document Root එකේ Permission අවුලක් විය හැක. එයට පහත එක භාවිත කරන්න.
#chmod 755 -R workspace 
එම ගොනුවේ විස්තර පහත ආකාරයේන විය යුතුය. (ls -l)
drwxr-xr-x 8 dinuka dinuka      4096 2011-02-08 21:20 workspace
අවවාදය - workspace ගොනුව සාදන විට root ලෙස ලොග් වී නොසාදන්න. සෑදුවානම් එහි group එක සහ අයිතිය ඔබේ අයිතියට පවරා ගන්න.

ගෙදර වැඩ - තමාගේ workspace එකේ Viruerl Host එකක් සාදන්න.

නිවසේදීම AMP (Apache, MySQL, PHP) සාදා ගැනීම

හුගක් කට්ටිය උත්සහ කරනවා තමන් වැඩියෙන් දන්න WAMMP XAMMP වගේ දේවල් Linux වල ස්ථාපනය කරන්න. Windows පුරුදු කට්ටිය GUI මත යැපෙන නිසා එසෙ වන්නට ඇත. නමුත් අන්තර්ජාල පහසුකම් තිබෙනවානම් ලිනක්ස් වල ඉතා පහසුවෙන් Apache, MySQL හා PHP ස්තාපනය කල හැක. ඒ සදහා පහත විදානය භාවිත කරන්න.
$sudo apt-get install apache2 php5 mysql-server

මෙහි Apache, MySQL හා PHP සදහා වූ පැකේජ මෙන්ම ඒවා එකිනෙකට සම්බන්ද කරන පැකේජද තිබෙන බව ඔබට පෙනී යයි. ඔබ PhpMyAdmin ස්ථාපනයට අදහස් කර  සිටින්නේ නම් MySQL ස්ථාපනයේ අසන root සදහා password එකක් ලබා දීම පහසුය.

Apache ස්තාපනය නිවැරදි ආකාරයට වුනා දැයි බැලීමට වෙබ් බ්‍රව්සරයේ http://localhost ලෙස සහෙන් කර බලන්න.
PHP ස්ථාපනය නිවැරදි ආකාරයට වුනා දැයි බැලීමට /var/www ගොනුවේ සරල PHP ලේඛණයක් (<?php echo phpinfo(); ?>)සාදා http://localhost/test.php ආකරයට වෙබ් බ්‍රව්සරයේ සටහන් කර බලන්න. PHP ලේඛණය නිර්මාණයට පහත විදානය භාවිතා කරන්න.
$sudo vi /var/www/test.php
(එහි එන Text Editor එකේ ලිවීමට යතුරු පුවරුවේ i යතුරත් ඒවා ලියා සේව් කිර ඉවත් වීමට Esc එක ඔබා :wq භාවිත කරන්න. මීට ප්‍රථම sudo apt-get install vim භාවිතයෙන් vim ස්ථාපනය කර සිටින්න. Vim ගැන ඉගෙන ගැනීමට vimtutor යන විදානය දුන් විට එන Tutorial භාවිතා කරන්න.)

MySQL ස්ථාපනය වී ඇත්දැයි බැලීමට පහත විදානය ලබා දී බලන්න.
$mysql -u root -p

PhpMyAdmin ස්ථාපනයට පහත විදානය භාවිත කරන්න.
$sudo apt-get install phpmyadmin
වෙබ් බ්‍රව්සරයේ http://localhost/phpmyadmin ලෙස සටහන් කර එය භාවිත කල හැක.

Apache වල හෝ PHP වල යම් (configuration) වෙනසක් සිදුකල හොත් නැවත Apache restart කල යුතුය. ඒ සදහා පහත විදානය යොදා ගනි.
$sudo sudo service apache2 restart
ගෙදර වැඩ - තමන්ටම කියල වෙබ් සර්වර් එකක් හදා ගන්න.

Zend හා ඒ ආශ්‍රිත කර්මාන්ත

JQuery ලියලා ඇති වගේ කියලා හිතුන නිසා Zend ගැන ලියන්න හිතුවා. මේක ලිව්වට මාත් ඔය Zend ගැන වැඩිය දන්නෙ නෑ. Zend ඉගෙනගන්න කට්ටිය වැඩියෙන් පාවිච්චි කරන්නෙත් කරන්න වෙන්නෙත් Zend Quick Start එක තමා. ඒත් එක තේරුම් ගන්න ලේසි නෑ. (මන්දා මට නම් අමාරු වුනා.) PHP MySQL යන්තම් සන්තන් පුරුදු අපිට නොදන්න Zend වල SQLite එක්ක තියන තරන් ඕක්කොම දේවල් එක සැරේ කියලා දේනන ගත්තාම මොන යකාටද තේරෙන්නෙ. ඒක නිසා මම හිතුවා තේරෙන විදිහට ලියන්න. මේක මීටත් වඩා ලේසි විදිහට ලියන්න පුලුවන්. ඒත් එතකොට Zend වල ගතිය නැති වෙනවා.

Zend කියන්නෙ PHP සදහා වූ open source, object oriented web application framework එකක් කියලා තමා මුලින්ම තියෙන්නෙ. මේක MVC (Model-View-Controller) කියන software architecture එක තමා පාවිච්චි කරන්නෙ. මුලින්ම දන්නෙ නැති කට්ටියට ඒක කියලා දෙන්නම්. සමහර විට මේක නෙමේ වෙන්න ඇති MVC කියන්නෙ. නමුත් මේ අදහස ගත්තත් හොදටම ඇති. (මන්දා. මට නම් ඇති)

මේ පින්තූරෙ විදිහට users ලා බලන html කෑලි තියෙන්නෙ View එකේ. ඒකෙ පෙන්වන දත්ත ගේන්නෙ Controller එක හරහා Model වලින්. Controller එක කරන්නෙ ඔය දෙක සම්බන්ද කරන එක තමා. Model ඇතුලෙ තමා Database වලට අදාල වැඩ, ගණිත කර්ම වගේ හැම මගුලම කරන්නෙ. ඔය ඇති MVC ගැන. මීට වඩා දන්න කවුරු හරි ලිපියක් ලියලා එවන්න.

මේක එක සැරේට කියලා දෙන්න අමාරුයි. අනික Zend වල PHP වලින් කරන ඔක්කොම වගේ කරන්න පුලුවන් විදිහට තියන නිසා ඔක්කොම කියලා දෙන්න අමාරුයි. මුලින්ම Database එකට දත්ත දාන හැටි හා පෙන්වන හැටි කියලා දෙන්නම්. මෙන්න මේ විදිහට තමා කරන්න බලාපොරෝතතුව.

  1. Apache වලින් Virtual Host එකක් හදා ගැනීම.
  2. Zend වලින් නව ව්‍යාපෘතියක් සෑදීම.
  3. Zend layout එක සාදා ගැනීම.
  4. Zend වලින් MySQL Database එකක් සම්බන්ද කර ගැනීම හා දත්ත ගෙන පෙන්වීම.
  5. Zend වලින් Form එකක් හදා ගැනීම හා Database එකට දත්ත යැවීම.

සොට් 5න් වැඩේ ඉවරයි. මම මේක ලියන්නෙ Linux පාවිච්චි කරන කටිටියට තේරෙන විදිහට. මොකද මම මේ මගුල් Windows වල කරන්න දන්නෙ නැති නිසා.

කියන්න අමතක වුනානෙ. Zend එක්ක වැඩ කරන්න ලේසි IDE එකක් තෝර ගන්න. මම නම් පාවිච්චි කරන්නෙ Eclipse. තව Aptana Studio කියලා එකක් තියෙනවාලු ඊට වැඩිය හොද. NetBeans නම් කොහොමද දන්නෙ නෑ. Dreamweaver වගේ එවා නම් පාවිච්චි නොකලට කමක් නෑ.

ගෙදර වැඩ - Zend Quick Start එක කියවන්න.