Zend PHP Certification: PHP Basics

PHP ტეგები

სულ ოთხი ტიპის ტეგი არსებობს, რომელთაგან მხოლოდ პირველის გამოყენებაა რეკომენდირებული.

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?";

Am I commented out?
*/-ს გადაფარავს //-ს.

2. რას დაბეჭდავს შემდეგი კოდი:

// /* Hi ?> */ Am I commented out?

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 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"

1. 10
2. 10
3. 10
4. 10
5. 10
6. 10
7. 0

5. რას დაბეჭდავს კოდი (php.net):

echo 01090;

დაბეჭდავს რიცხვს 8.
ეს არის რვაობითის ჩანაწერი, რადგან 0-ით იწყება. მაგრამ რვაობითისთვის დაუშვებელ ციფრსაც შეიცავს. როცა ასეთი ციფრი ხვდება ინტერპრეტატორს, ის უბრალოდ დანარჩენს ჩამოაჭრის. ამ შემთხვევაში დარჩება 010, რაც ათობითში 8-ის ტოლია.

6. რას დაბეჭდავს კოდი (php.net):

echo false;
echo false+false;
echo intval(false);
echo true;
echo true+true;
echo intval(true);

როგორც ჩანს boolean კონსტანტებს, true-ს და false-ს სხვადასხვანაირად ექცევა ინტერპრეტატორი.
იმის მაგივრად, რომ გამოვიდეს 000121, გამოდის 00121.
ცალკე აღებული false სტრიქონად გარდაქმნის დროს 0 არ ხდება, ხოლო true ხდება 1.

Zend PHP Certification

Zend | PHP Company

წელიწადზე მეტია რაღაც ჟინს ვყავარ შეპყრობილი, რომ Zend-ის სასერტიფიკაციო გამოცდა ჩავაბარო. პირველ რიგში იმიტომ, რომ მისთვის მომზადების პერიოდში ბევრ რამეს ვისწავლი, მეორე იმიტომ, რომ შემეძლება ჩემთვის რაღაცით მაინც განვსაზღვრო რა დონეზე ვიცი ენა და მესამე იმიტომ, რომ რაღაცნაირად მომწონს ამ გამოცდისთვის მზადების პროცესი.

მთელი რიგი მიზეზების გამო, რომელთა შორის დიდი ადგილი სიზარმაცეს უკავია :) გეგმის ეს პუნქტი სულ უკანა და უკანა გვერდებზე მიიწევს. ამიტომ ბლოგზე დავწერ და უკან დასახევს გზას აღარ დავიტოვებ :)

ამას გარდა, მარტო მეცადინეობა და კითხვა ძალიან მოსაწყენია. მეგობრებს მისთვის ჯერ ჯერობით არ ცალიათ. საბოლოო ჯამში, გადავწყვიტე ჩემს თავს წავუკითხო ლექციები :) და ჩემს თავს შევუდგინო სავარჯიშოები, რომლებსაც ბლოგზე გამოვაქვეყნებ ხოლმე..

პ.ს. სავარჯიშოებს რაც შეეხება, ერთადერთი რაც ვნახე – The Zend PHP Certification Practice Test Book ეს არის. ეს კი ძალიან ცოტაა. ზოგადად შეცდომებზე ვსწავლობ და ბევრი ამოცანები მინდა ^^

თუ ვინმე გამიმხელთ კარგ რესურსს, მადლობელი ვიქნები :)

Eva Cassidy – Over the rainbow

მაწყნარებს, მამშვიდებს და ბედნიერად მაგრძნობინებს თავს. მაშინაც კი, როცა ცუდად ვარ და კარგად გახდომაც არ მინდა :)

იმდენად მიყვარს, არ მინდა სადმე დამეკარგოს ან დამავიწყდეს.. ამიტომ აქ უნდა მქონდეს :) )

To post or not to post…

ხელი ვერ მიბრუნდება იმის დასაწერად, რომ ჩემი შვებულება დასრულდა :D მაგრამ არაფერს ხომ ფასი არ აქვს დასასრულის გარეშე. სამაგიეროდ, იმდენი მხიარულებით და სიცილით რამდენიმე წლის სიცოცხლე მომემატა და იმ წლებისთვის გასახსენებლადაც ბევრი ბედნიერი წუთი შევმატე მოგონებების სკივრს.

ბუნებაში გასვლა და სიმშვიდე იმით მაინც მიყვარს, რომ ახალი იდეები წვიმასავით მოდის, განხორციელება თქვი შენ… თანაც ხანდახან საჭიროა ხოლმე გვერდზე გადგომა, ან ზევიდან დახედვა, ან ცივი გონებით განსჯა და პრობლემების მოგვარებაც მარტივია ასე..

ბევრი ვიფიქრე თუ ცოტა, მომენატრა ჩემი დღიური, ინკოგნიტო ბლოგიც და სხვებისაც მშურს უკვე, პირად თემებზე რომ წერენ პოსტებს.. ჰოდა, გადავწყვიტე ამ ისედაც აჯაფსანდალ ბლოგს ახალი ტიპის წერილები შევმატო. თუნდაც იმიტომ, რომ გულის სათქმელის გამზიარებლები სანაპიროზე დავტოვე v_v და ჯერ კიდევ არ აპირებენ ჩამოსვლას.

Continue reading