Класстарды қалай автоматты түрде жүктеуге болады?



Дата13.05.2020
өлшемі33,4 Kb.
#67928
түріНұсқаулар
Байланысты:
Класстарды автоматты түрде жүктеу РНР


Класстарды қалай автоматты түрде жүктеуге болады?

Жоғарыда айтып өткенімдей, класстарды жеке-жеке файлдар ретінде, мысалы User.php,Article.php т.с.с.  деп жазып,сосын керек кезде кодтың ішінде require, include сықылды PHP нұсқауларын қолданып ол файлдарды шақырып алуымызға болады.

Енді түсінікті болу үшін екі php коды жазылған файлдарды сипаттап шығалық.Алдымен,мен өзім тест жасау үшін пайдаланатын testphp директорияда (каталог немесе папкада) тағы 2 директориялар ашпақпын, яғни  testclass және testobj деген.

Алдымен testclass директориясында  классты сипаттайтын "user.php" файлды жазып шығу керек:



class Testclass_User{

public $name;

private $email;

private $pass;

// конструктор

function __construct($uname, $uemail, $upass){

$this->name = $uname;

$this->email = $uemail;

$this->pass = $upass;

}

//қосымша getUserInfo() деген әдіс



function getUserInfo(){

echo "Аты-жөні: ".$this->name."


";

echo "Поштасы: ".$this->email."


";

echo "Пароль: ".$this->pass."


";

}

}



Сосын testobj директориясында негізгі орындалатын "userobj.php" файлына мынадай php кодын жазып шығайын:

// testphp/testclass/ директориясындағы файлға апаратын жолды белгілейміз

set_include_path('..'.PATH_SEPARATOR.'/testphp/');
// жүктелуге қосылатын класстың атын функция параметрі түрінде сипаттау

function autoloader($className){

$path = str_replace('_', '/', strtolower($className));

return include_once $path.'.php';

}

// файлды автоматты түрде жүктейтін функция



spl_autoload_register('autoloader');
// класстан объект жасаймыз

$userobj = new Testclass_User("Айна", "aina@mail.ru", "ai_Na2015");

//осы объектінің getUserInfo() әдісін шақыралық

echo $userobj->getUserInfo();



?>

Енді testobj директориясында орналаcқан "userobj.php" файлын Денвер арқылы шақырайық.Ойлағанымыздай, ол Testphp_User классын жүктеді және нәтижесі былай болып шықты:



Енді кодтың ішінде жазылған сіздерге таныс емес функцияларға жеке-жеке қысқаша тоқталып өтейін:



1. set_include_path('..'.PATH_SEPARATOR.'/testphp/');

Бұл функция require, include т.т. сықылды нұсқаулардың жолай қосылатын файлдарды  іздейтін  директориялар тізіміне жаңа мән беру арқылы өзгеріс жасайды.Басқаша айтқанда, php.ini деген конфигурациондық файлдың include_path директивасында айқындалған файлға апаратын жолға өзгеріс жасалынады.



Бұл жерде PATH_SEPARATOR - директорияларды ажыратып тұратын тұрақты таңба.Ол Windows те былай сипатталады (;), ал Unix те  былай (:).

2. spl_autoload_register('autoloader'); 

Бұл функция new арқылы объект жасағанымызда оның параметрінің ішінде берілген класстың аты бойынша файлды жоғарыдағы set_include_path() де берілген директорияда іздей бастайды.Егер табылса, оны сол директориядан жүктейді.

Достарыңызбен бөлісу:




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет