წინა თავში განვიხილეთ ზოგადად ფუნქციები, ამ თავში კი შევეხებით უკვე PHP-ში ჩადგმულ ფუნქციებს რომლებიც აგრეთვე ფუნქციებს უკვაშირდებიან.
ფუნქციის შექმნა : create_function
არსებობს ფუნქციის შექმნის ალტერნატიული გზა. ფუნქცია create_function ქმნის ფუნქციას ანონიმური სახელით, რომელსაც მიანიჭებს უნიკალურ სახელს და დაუბრუნებს მითითებულ ცვლადს. მას მიეწოდება ორი პარამეტრი: არგუმენტები და კოდი.
სინტაქსი : create_function ( [არგუმენტები], [კოდი] )
ამ ფუნქციის გამოყენება, მაგალითად, შეიძლება რაღაც არსებულ ინფორმაციაზე დაფუძვნებით, რომელიც კიდევ რაიმე ფუნქციის დროს მივიღეთ.
Code
<?php
$funqcia = create_function('$x,$y', 'return $x+$y;');
echo "Funqciis saxelia: ".$funqcia;
echo "
";
echo "Funciam shesruleba: ".$funqcia(2, 4);
?>
არსებობის შემოწმება : function_exists
ამ ფუნქციის გამოყენებით, რომელიც აბრუნებს Boolean-ის ტიპის ცვლადს (ture, false) შეიძლება შევამოწმოთ არსებობს თუ არა გარკვეული ფუნქცია.
სინტაქსი : function_exists( [ფუნქციის სახელი] )
Code
<?php
// phpinfo() aris funqcia romelic achvenebs
// php-stan dakavshirebul serverul info-s.
$bool = function_exists("phpinfo");
if ($bool == true) echo "funqcia <b>phpinfo</b> arsebobs!";
else echo "funqcia <b>phpinfo</b> ar arsebobs!";
?>
ფუნქციების სიის მიღება : get_defined_functions
get_defined_functions() აბრუნებს მასივის ტიპის ცვლადს, რომელშიც შეტანილია ყვალა განსაზღვრული ფუნქცია. მასივებზე ჯერ არ გვისაუბრია, მხოლოდ ის ვთქვათ, რომ ფუნქცია print_r-ს დანიშნულებაა ეკრანზე გამოიტანოს მასივის შემადგენლობა. მოგვიანებით გავარჩევთ მასივის დამუშავებასაც.
Code
<?php
$funqciebi = get_defined_functions();
print("<pre>");
print_r($funqciebi);
print("</pre>");
?>
ფუნქციების შეცვლა : override_function
მომავალში აუცილებლად დაგჭირდებათ PHP-ის ზოგიერთი ფუნქციების თქვენს გემოზე დაყენება. სწორედ ამისთვის არსებობს ფუნქცია.
სინტაქსი : override_function( [ფუნქციის სახელი], [ფუნქციის არგუმენტები], [ფუნქციის კოდი] )
ფუნქცია მოქმედებს ისევე როგორც create_function, იმის გამონაკლისით რომ საჭიროებს იმ ფუნქციის სახელს რომელსაც ვცვლით.
ფუნქციის სახელის შეცვლა : rename_function
ამ ფუნქციის მეშვეობით შეძლებთ არსებული ფუნქციების სახელის შეცვლას.
სინტაქსი : rename_function ( [ორიგინალი სახელი], [ახალი სახელი] )
Code
<?php
rename_function('phpinfo', 'informacia' );
?>
არგუმენტებთან მუშაობა
არგუმენტებთან მუშაობა PHP-ის ფუნქციების ერთ-ერთი ყველაზე სასარგებლო რამაა. შესაძლებელია კერძოდ ერთი არგუმენტის მიღება, ყველა არგუმენტის და რაღათქმაუნდა მათი რაოდენობის. ამ დანიშნულებებს ასრულებს სამი ფუნქცია:
არგუმენტის მიღება : func_get_arg
ფუნქცია აბრუნებს მითითებული ნომრის შესაბამის არგუმენტს. გაითვალისწინეთ, რომ ნუმერაცია იწყება 0-იდან.
სინტაქსი : func_get_arg ( [ნომერი] )
Code
<?php
function saxelebi()
{
echo func_get_arg(0)." da ".func_get_arg(1);
}
saxelebi("none.ucoz.lv Portal","None.ucoz.lv forum");
?>
ყველა არგუმენტის მიღება : func_get_args
ფუნქცია აბრუნებს მასივს, რომელშიც შედის ყველა მითითებული არგუმენტი.
სინტაქსი : func_get_args()
ამ მაგალითში კვლავ გამოვიყენებთ მასივის შემადგენლობის ჩამოწერის ფუნქციას print_r
Code
<?php
function sia()
{
$argumentebi = func_get_args();
echo "<pre>";
print_r($argumentebi);
echo "</pre>";
}
sia("Dato","Gio","Levani","Kaxa","Misha");
?>
რგუმენტების რაოდენობა : func_num_args
ფუნქცია აბრუნებს მითითებული პარამეტრების რაოდენობას.
სინტაქსი : func_num_args()
Code
<?php
function sia()
{
$raodenoba = func_num_args();
echo $raodenoba;
}
sia("Misha","Kaxa","Levani");
?>
ფუნქციის გამოძახების ალტერნატივა : call_user_func
არსებობს შემთხვევები როდესაც ფუნქციის გამოძახება გვიხდება ცვლადიდან, ანუ შეიძლება ცვლადში ეწეროს ჩვენი ფუნქციის სახელი. შეიძლება იფიქროთ, რომ შესაძლებელია ამის განხორციელება შემდეგნაერად:
Code
<?php
function testi()
{
echo "Gamozaxebulia!";
}
$funqcia = "testi";
$funqcia();
?>
ეს მართალიცაა, მაგრამ კოდი იმუშავებს მხოლოდ ზოგიერთ PHP-ის ვერსიაზე და დამოკიდებული ქინება php.ini-ში მითითებულ პარამეტრებზე. ეს პრობლემა უფრო ხარისხიანად რომ გადავჭრათ მოდით შევხედოთ ფუნქციას call_user_func
სინტაქსი : call_user_func ( [ფუნქციის სახელი], [არგუმეტი1], [არგუმენტი...] )
Code
<?php
function testi()
{
echo "Gamozaxebulia!";
}
$funqcia = "testi";
call_user_func($funqcia);
?>
მას შემდეგ რაც შეისწავლით მასივებთან მუშაობას, გაგიჩნდებათ შეკითხვა, ნუთუ არ შეიძლება ფუნქციის ისე გამოძახება, რომ პარამეტრად მივუთითო მასივი არგუმენტებით. ესეც შესაძლებელია და ხდება ფუნქციით call_user_func_array
სინტაქსი : call_user_func_array ( [ფუნქციის სახელი], [მასივი არგუმენტებით] )
მასივების შესწავლის შემდეგ ამ ფუნქციას აუცილებლათ დავუბრუნდებით.