Zend PHP Certification: PHP Basics
Sunday, August 16th, 2009PHP ტეგები
სულ ოთხი ტიპის ტეგი არსებობს, რომელთაგან მხოლოდ პირველის გამოყენებაა რეკომენდირებული.
1. ჩვეულევრივი <?php echo "Hello World"; ?> 2. short tags <? echo "Hello World"; ?> ან <?= "Hello World" ?> 3. ASP tags <% echo "Hello World"; %> (მისი shortcut <%= "Hello World" %> 4. Script tags <script language="php"> echo 'Hello world'; </script>
- ამ ოთხიდან Short და Asp ტეგების გამოყენება თუ გვინდა, php-ის კონფიგურაციაში უნდა გავააქტიუროთ შესაბამისი ფუნქციონალი. ისინი პორტატული არ არის და საერთოდ გვირჩევენ, რომ არ გამოვიყენოთ.
- short ტეგებს კონფლიქტი მოსდით xml ჰედერთან.
- ყველანაირი სიმბოლოები (მათ შორის ”ცარიელი” space-ები, ახალი ხაზის “\n” სიმბოლოები, ტაბები “\t”) რაც php ტეგების გარეთაა, პირდაპირ ბრაუზერის output-ში წავა. და თუ ისინი ჰედერებს გაუსწრებენ, არასასურველი შედეგი იქნება.
- ზედა პუნქტიდან გამომდინარე php პარსერი დამხურავი ტაგის მომდევნო პირველ newline სიმბოლოს output-ში არ გაგზავნის, იმიტომ რომ ზოგი რედაქტორი ავტომატურად, ჩვენს გარეშე ამატებს ”\n”-ს ფაილის ბოლოს.
- თუ დამხურავი ტეგი ფაილის ბოლოს არის, ის შეიძლება საერთოდ გამოვტოვოთ და ამით თავიდან ავიცილოთ ზევით განხილული შემთხვევა. შეცდომა არ იქნება, ოღონდ ეს xml პარსერს შეუშლის ხელს.
კომენტარები
- ერთ-ხაზიანი კომენტარებისთვის შეგვიძლია // და # გამოვიყენოთ. მათი მოქმედება სრულდება იმავე ხაზის ბოლოს ან იმ ხაზზე მყოფ php-ის დამხურავ ტეგთან (ეს არ ეხება script დამხურავ ტეგს).
- მრავალ სტრიქონიანი კომენტარებისთვის - /* */ ან /** */
მათზე php-ის დამხურავ ტეგს ზეგავლენა არ აქვს. ასევე არ აქვს მნიშვნელობა თუ რამდენ ასეთ კომენტარის ბლოკს ჩავდგამთ ერთმანეთში, მაგრამ მისი პირველივე დამხურავი ყველას ერთდროულად დახურავს.
ტიპები
PHP-ში რვა პრიმიტიული ტიპი არსებობს. აქედან:
ოთხი სკალარული: boolean, integer, float (ზუსტად იგივეა რაც double, ორი სახელი მხოლოდ ისტორიული მიზეზის გამოა შემორჩენილი), string
ორი შედგენილი: array, object
ორი სპეციალური ტიპი: resource, NULL
ასევე არის რამენიმე ფსევდო-ტიპი: mixed, number, callback
PHP მკაცრად ტიპიზირებული ენა არ არის, ამიტომ ცვლადის წინასწარ აღწერა და ტიპის გამოცხადება საჭირო არ არის. ტიპის დადგენა runtime დროს ხდება.
ტიპების ერთმანეთზე დასაყვანად ცვლადს წინ ვუწერთ ფრჩხილებში ტიპის სახელს. დაშვებულია შემდეგი:
- (int), (integer) - cast to integer
- (bool), (boolean) - cast to boolean
- (float), (double), (real) - cast to float
- (string) - cast to string
- (array) - cast to array
- (object) - cast to object
boolean-ზე დაყვანის შემთხვევაში შემდეგი გამოსახულებები გამოდის false:
- integer 0 (ნული)
- float 0.0 (ნული)
- ცარიელი სტრიქონი (string), და ასევე სტრიქონი, რომელიც მარტო ერთი ”0”-გან შედგება.
- მასივი, რომელშიც ელემენტები არ არის.
- სპეციალური ტიპი NULL
- SimpleXML ობიექტი, რომელიც ცარიელი ტეგებისგან არის შექმნილი
integer ტიპზე დაყვანის დროს:
- boolean ცვლადის დროს true გადადის ერთიანში, ხოლო false გადადის 0-იანში.
- string ცვლადის დროს თუ სტრიქონი მხოლოდ რიცხვს არ შეიცავს, მაშინ ინტერპრეტატორი ყველანაირად ცდილობს მხოლოდ რიცხვის ნაწილი ამოიღოს. ის უგულველყოფს space-ებსაც, მაგრამ ვერაფერს იზამს, თუ სტრიქონი სხვა სიმბოლოებით იწყება (ამაზე იხილეთ სავარჯიშო 4
)
მთელი რიცხვები (integer) შეიძლება წარმოდგენილი იყოს ათობით, თექვსმეტობით ან რვაობით ათვლის სისტემებში. რვაობითი რიცხვები აუცილებლად იწყება 0-ით, ხოლო თექვსმეტობითი 0x-ით.
შეკითხვები:
შეკითხვები:
1. რას დაბეჭდავს შემდეგი კოდი:
/* echo "Hi" // */ echo "Am I commented out?";
*/-ს გადაფარავს //-ს.
2. რას დაბეჭდავს შემდეგი კოდი:
// /* Hi ?> */ Am I commented out?
მიუხედავად იმისა, რომ PHP-ის დამხურავი ტეგი მრავალსტრიქონიან კომენტარებშია მოქცეული, ის მაინც დახურავს კომენტარს. როგორც ჩანს ამ შემთხვევაში //-ს გადაფარავს */-ს.
3. რას დაბეჭდავს შემდეგი კოდი (php.net):
var_dump(0 == 1); var_dump(0 == (bool)'all'); var_dump(0 == 'all'); var_dump(0 === 'all');
boolean false
boolean true
boolean false
4. რას შედეგი ექნება დაყვანებს (phpf1.com):
1. (int)"10" 2. (int)"10.5" 3. (int)"10,5" 4. (int)"10 " 5. (int)" 10 " 6. (int)"10test" 7. (int)"test10"
2. 10
3. 10
4. 10
5. 10
6. 10
7. 0
5. რას დაბეჭდავს კოდი (php.net):
echo 01090;
ეს არის რვაობითის ჩანაწერი, რადგან 0-ით იწყება. მაგრამ რვაობითისთვის დაუშვებელ ციფრსაც შეიცავს. როცა ასეთი ციფრი ხვდება ინტერპრეტატორს, ის უბრალოდ დანარჩენს ჩამოაჭრის. ამ შემთხვევაში დარჩება 010, რაც ათობითში 8-ის ტოლია.
6. რას დაბეჭდავს კოდი (php.net):
echo false; echo false+false; echo intval(false); echo true; echo true+true; echo intval(true);
იმის მაგივრად, რომ გამოვიდეს 000121, გამოდის 00121.
ცალკე აღებული false სტრიქონად გარდაქმნის დროს 0 არ ხდება, ხოლო true ხდება 1.

