PHP பாகம்-2
PHP என்பது என்ன?
PHP என்பது தற்சுதந்திர(Intuitive), வழங்கியினிடத்தே (server-side) எழுதப்பட்டிருக்கிற ஒரு கதைவழி-மொழி(Scripting language) ஆகும். மற்ற கதைவழி மொழியைப்போலவே, இது மாறுநிலை வலைப்பக்க பொருளடக்கத்தின்(Dynamic webpage content) உருவாக்கத்திலும், வலைஉலவியிலிருந்து (Web browser) பெறப்பட்ட தரவுகளை கையாளவும் தேவையான மாறாநியதியை(Logic) உருவாக்க மேம்படுத்துபவரை அனுமதிக்கிறது. இது தரவுத்தளத்துடன்(Database) இணைந்து செயல்படவும், வலைப்பக்கத்தில் திரையிடக்கூடிய தரவுகளை(Data) பிரிப்பதிலும், பயனரால் உள்ளிடப்பட்ட தகவல்களை தரவுத்தளத்தினுள் சேமிக்கவும் தேவையான விரிவாக்கங்களைக்(Extensions) தன்னுள் கொண்டுள்ளது.
PHP எப்படி வேலை செய்கிறது?
PHP எப்படி வேலை செய்கிறது என்பதை புரியச் செய்ய, பயனரின் உலவிக்கு வலைப்பக்கம் வழங்கப்படுகிற போது என்ன நடக்கிறது என்பதை ஆராய்ந்தால் உதவியுள்ளதாக இருக்கும் :
ஒரு பயனர் வலைத்தளத்தை பார்க்கிற போது, அல்லது பக்கத்தின் மீதுள்ள இணைப்பை சொடுக்கிற(Clicks) போது, வலை உலவியானது பயனருக்கான வலைப்பக்க நகலை கேட்டு அதற்கான வேண்டுகோளை வலைவழங்கிக்கு(Web Server) அனுப்பிகிறது. வலைவழங்கியானது வேண்டுகோளை ஏற்று, வலைப்பக்கத்தின் ஆவணத்தைக் கண்டுபிடித்து இணையத்தின் வழியாக அதை திரும்ப அனுப்புகிறது.
என்னென்ன வலைப்பக்க பொருளடக்கங்களை வலைஉலவி புரிந்து கொள்கிறது என்பதைப் பார்ப்போம் : HTML, XHTML, Javascript ஆகியவை. இவ்வகையான பொருளடக்கங்களுடன் என்ன செய்ய வேண்டும் என்ற குறிமுறையை(Code) வலைஉலவி கொண்டிருக்கிறது. எடுத்துக்காட்டாக, HTML-ன் வடிவமைப்பைப் புரிந்து கொண்டு அதற்கேற்ப பக்கத்தினை தருவிக்கிறது(Render) மற்றும் Javascript-லிலுள்ள நெறிமுறைக்கட்டளைகளை(Instructions) எப்படி இயக்க வேண்டுமென்கிற Javascript உரைப்பெயர்ப்பாளரைத்(Interpreter) தன்னகத்தே(Built-in) கொண்டுள்ளது. ஆனால் HTML-வுடன் பதிக்கப்பெற்ற PHP கதைவழியினைப் பற்றியும், அதை எப்படி உரைப்பெயர்க்க(Interpret) வேண்டுமென்பது பற்றியும் வலை உலவிக்கு எதுவும் தெரியாது.
எனவே, வலை வழங்கியிடமிருந்து வருகிற பதிதலை(Response) வலைஉலவியை அடையும் முன்பே ஏதாவது செய்ய வேண்டும். இதற்காகத்தான் PHP முற்செயற்பாட்டுக்கூறு(PHP Pre-processing module) என்பது உபயோகப்படுத்தப் படுகிறது. முன்னரே குறிப்பிட்டது போல்,PHP-யானது வலைவழங்கியுனுள் ஒருங்கிணைக்கபட்டுள்ளது. இந்த PHP கூறானது, PHP கதைவழியினை கொண்டிருக்கிற பக்கத்தினை வலைவழங்கிக்கு அனுப்பி, அதை வலைஉலவி புரிந்து கொள்கிற வடிவமைப்பில் மாற்றியமைத்து திரும்ப அனுப்புகிறது.
இந்த கருத்துப் படிவத்தை புரியச்செய்ய, ஒரு காட்சிப்பாகுபாட்டை எடுத்துக்கொள்வோம். கீழ்கண்ட HTML-ஆனது ஒரு பத்தியை(<p>…</p>) வெளியிடக்கூடிய PHP கதைவழியைக் கொண்டிருக்கிறது.
<html>
<head><title>A PHP Example</title></head>
<body>
<?php
echo ‘<p>This line of HTML was generated by a PHP script embedded
into an HTML document</p>’;
?>
</body>
</html>
கீழ்கண்ட வரைபடம் மூலம் எப்படி PHP கதைவழி இயங்குகிறது என்பதை தெளிவாகக் காணலாம்.
படம் 1.a
படம் 1.a-ல், முதலில் PHP கதைவழியானது Zend Engine தொகுப்பியால் (Compiler) நினைவகத்தில் பொதியேற்றப்பட்டு(Load) opcode(Operation Code-குறிமுறை இயக்கம்)-ஆக மாற்றப்படுகிறது. Opcode என்பது கீழ்மட்ட இரும நெறிமுறைக்கட்டளைகளாகும்(low level binary instructions). பின்னர் Opcode-ஐ இயக்கி, உருவாக்கப்பட்ட HTML-ஐ வலைஉலவியில் தருவிக்கப்படுகிறது. பிறகு Opcode-ஆனது நினைவகத்திலிருந்து வெளியேற்றப்படுகிறது(Flush). நிழலிடப்பட்ட பெட்டிகள் அனைத்தும் விருப்பத்திற்கேற்றவை(Optional).
இதன் வெளியீடு வலைஉலவிக்கு வரும்போது கீழ்கண்டவாறு இருக்கிறது.
<html>
<head><title>A PHP Example</title></head>
<body>
<p>This line of HTML was generated by a PHP script embedded into an HTML document</p>
</body>
</html>
PHP-யின் உள்ளமைவு தகவல்கள்(Configuration Info) :
PHP-யின் ஆவணங்களை வலைவழங்கியின் வழியாக உலவியில் இயக்குவதற்கு, அதனை /var/www என்ற அமைவிடத்தில் சேமித்து வைக்க வேண்டும். அதைச் செய்வதற்கு, பின்வருவனவற்றை மேற்கொள்ளவும் :
$ sudo chmod -R 0777 /var/www
$ mkdir /var/www/php
பின்னர், ஏதாவது ஒரு உரைப்பதிப்பானை(Text Editor)-ஐ திறந்து அதில் கீழ்கண்ட php குறிமுறையை எழுதி அந்த ஆவணத்திற்கு index.php என்று பெயரிட்டு மேற்குறிப்பிட்ட /var/www/php என்ற இடத்தில் சேமிக்கவும்.
<?php
phpinfo();
?>
phpinfo() சார்பானது(function) வலைவழங்கியினுள் ஒருங்கிணைக்கப்பட்ட PHP முற்செயற்கூற்றின்(PHP Pre-processing module) தகவல்களை வெளியிடும் நோக்கிற்காக PHP-யினுள் உருவாக்கப்பட்டுள்ளது. இது PHP-யின் அனைத்து உள்ளமைவு தகவல்களையும் தருகிறது.
PHP-யின் உள்ளிருப்பு சொற்றொடர் இலக்கணம்(Default Syntax) :
PHP-யானது <?php என்ற குறியீட்டுடன் ஆரம்பித்து ?> என்பதுடன் முடிவடைகிறது. இதனை PHP வரம்புச்சுட்டி(Delimiter) (<?php …. ?>) என்பர். எடுத்துக்காட்டாக,
<?php
echo “<p>Some dynamic content here</p>”;
?>
<p>Some static content here</p>
PHP இதைத் தவிர, மேலும் சில வரம்புச்சுட்டியை பயன்படுத்துகிறது. அவைகளை இயங்கச்செய்ய நாம் PHP-யின் உருவமைப்பு ஆவணத்தில் (Configuration File – /etc/php5/apache2/php.ini) உள்ள short_open_tag கோட்பாட்டினை(Directive) On என்று மாற்றியமைக்க வேண்டும். இதன் மூலமாக
கீழ்கண்ட முறையில் PHP-யினை எழுதலாம்.
<?
print “This is another PHP example.”;
?>
அல்லது,
<script language=”php”>
print “This is another PHP example.”;
</script>
ஆனால் ஒரு சில முரண்பாரடுகளைத்(Conflicts) தவிர்க்க, <?php …. ?> வரம்புச்சுட்டியையே பயன்படுத்துமாறு பரிந்துரைக்கப்படுகிறது.
குறிப்புரைகள்(Comments) :
இது மேம்படுத்துபவரின் புரிதலுக்காக இயல்பான மொழியில் (Natural Language) எழுதப்படுகின்ற ஒன்று. இதுபோன்ற குறிப்புரைகள் தொகுப்பியால் புறக்கணிக்கப்படுகிறது. இது பலவழிகளில் நிவர்த்தி செய்யப்படுகிறது.
ஒரு வரி குறிப்புரை(Single Line Comment) :
இது இரட்டை முன்கோடு(double slash – //) அல்லது # குறியீடு மூலமாக குறிப்பிடப்படுகிறது. எடுத்துக்காட்டாக,
<?php
// My first PHP script
echo “This is a PHP program.”; # Displaying string in PHP
?>
அடுக்குவரி குறிப்புரைகள்(Multiple-Line Comment) :
இது /* குறியீட்டில் ஆரம்பித்து */ குறியீட்டில் முடிவடைகிறது. எடுத்துக்காட்டாக,
<?php
/* My Description
Comes
here
*/
?>
உலவியில் தரவுகளை வெளியிடுதல் :
PHP பல வழிகளில் இதை வழங்குகிறது. அவை
i) print() கூற்று(Statement)
ii) echo() கூற்று
iii) printf() கூற்று
iv) sprintf() கூற்று
print() கூற்று :
இது தனக்கு கிடைக்கும் தரவுகளை உலவியில் வெளியிடுகிறது. இதன் மாதிரிவடிவம்(Prototype) பின்வருமாறு :
int print(argument)
இங்கே int – 0/1(print கூற்றின் இயக்கம் தோல்வியடைந்தது/வெற்றிகரமானது என்பதைக் குறிக்கின்றது.
<?php
print(“<p>I like PHP.</p>”);
?>
<?php
$language = “PHP”;
print “<p>I like $language.</p>”;
?>
<?php
print “<p>I like PHP.</p>”;
?>
மேற்கண்ட அனைத்து கூற்றுகளும் ஒரே மாதிரியான வெளியீட்டைத் தருகின்றன :
I like PHP.
echo() கூற்று :
இதன் மாதிரிவடிவம் பின்வருமாறு :
void echo(string argument1 [, …string argumentN])
இங்கே ஒன்றுக்கு மேற்பட்ட மாறிகளை(Arguments) காற்பள்ளி(,) பயன்படுத்தி கொடுக்கலாம். இதன் return type void என்பதால் print() கூற்றை விட வேகமாக செயல்படும்.
<?php
echo “I like PHP.”;
?>
<?php
$oopLang = “PHP”;
$procedureLang = “C”;
echo $oopLang,” is based on “,$procedureLang,” Language”;
?>
printf() கூற்று :
இது C மொழியில் உள்ளது போன்றதே. இது இரு காரணங்களுக்கு பொருத்தமானதாக இருக்கிறது.
i) இது நிலையான(Static) மற்றும் மாறுநிலை(Dynamic) தரவுகளை இரு தனித்தனி பகுதிகளில் பிரித்து வைக்கிறது.
ii) இது தரவுகளின் வகை(Type), துல்லியம்(Precision), சீர்மை(Alignment), இடம்(Position) ஆகியவற்றினைப் பொறுத்து எப்படி மாறுநிலை தகவல்களை திரையில் தருவிப்பது போன்ற கட்டுப்பாட்டினை நமக்கு அளிக்கிறது.
இதன் மாதிரிவடிவம் பின்வருமாறு :
integer printf(string format [, mixed args])
எடுத்துக்காட்டாக, நாம் மாறுநிலை முழுவெண் ஒன்றை நிலையான எழுத்துச்சரத்துடன் சேர்க்க வேண்டுமென கருதினால் :
<?php
$num1 = 3;
$num2 = 5;
printf(“%d * %d are %d.”, $num1, $num2, ($num1*$num2));
?>
இங்கு %d என்பது தரவுவகை குறிப்பான்(Type Specifier) ஆகும். Type Specifier-ன் பட்டியலை இங்கு காண்போம்.
Type |
Description |
%b |
இரும எண்களை(binary number) தருகிறது |
%c |
எழுத்துருவினைத்(character) தருகிறது |
%d |
பதின்ம எண்ணைத்(decimal number) தருகிறது |
%f |
மிதவை எண்ணைத்(floating-point number) தருகிறது |
%o |
எண்ம எண்ணைத்(octal number) தருகிறது |
%s |
எழுத்துச்சரத்தைத்(string) தருகிறது |
%u |
குறிக்கப்பெறாத முழுவெண்ணைத்(unsigned integer) தருகிறது |
%x |
பதினாறிலக்க(hexadecimal) சிற்றெழத்து(Lowercase) எண்ணைத் தருகிறது |
%X |
பதினாறிலக்க பேரெழுத்து(Uppercase) எண்ணைத் தருகிறது |
sprintf() கூற்று :
printf() கூற்றைப் போன்று ஒரே மாதிரியானவையே. ஆனால், இது வெளியீட்டை உலவிக்கு தருவதற்குப் பதிலாக ஒரு எழுத்துச்சரத்தின் மாறிக்குத்(String variable) தருகிறது. இதன் மாதிரிவடிவம் பின்வருமாறு :
string sprintf(string format [, mixed arguments])
எடுத்துக்காட்டு,
$cost = sprintf(“$%.2f”, 43.2); // $cost = $43.20
echo $cost;
இதுவரை PHP-யின் அடிப்படைகளைப் பார்த்தோம். அடுத்த இதழில் PHP-யின் தரவுவகைகள் மற்றும் வெவ்வேறான மாறிகளின் பயன்பாடுகளைப் பார்ப்போம்.
செல்வணி சம்பத், இணைய தள வல்லுநர்,
காஞ்சி லைனக்ஸ் பயனர் குழுவின் உறுப்பினர்,
மின்னஞ்சல் : selva.infobees@gmail.com
வலை : infobees.wordpress.com