spl_autoload_register ဖန်ရှင်

spl_autoload_register ဖန်ရှင်သည် ပေးထားသော လုပ်ဆောင်ချက်ကို အတန်းများ အလိုအလျောက်တင်သွင်းခြင်း နည်းလမ်းအဖြစ် မှတ်ပုံတင်ပေးပါသည်။ PHP သည် မသတ်မှတ်ရသေးသော အတန်းတစ်ခုနှင့် တွေ့သောအခါ၊ ၎င်းသည် မှတ်ပုံတင်ထားသော အလိုအလျောက်တင်သွင်းခြင်း လုပ်ဆောင်ချက်အားလုံးကို အစဉ်လိုက်ခေါ်ယူကာ အတန်း၏အမည်ကို ပေးပို့ပါသည်။ ပထမပိုင်ရှင်မှာ အလိုအလျောက်တင်သွင်းရန် callback-လုပ်ဆောင်ချက်ဖြစ်ပြီး၊ ဒုတိယပိုင်ရှင် (မဖြစ်မနေလိုအပ်ခြင်းမရှိ) မှာ အမှားတစ်ခုဖြစ်ပွားလျှင် ချွင်းချက်ပစ်ရန် ဟုတ်မဟုတ်၊ တတိယပိုင်ရှင် (မဖြစ်မနေလိုအပ်ခြင်းမရှိ) မှာ လုပ်ဆောင်ချက်အား တန်းစီစာရင်း၏အစတွင် ထည့်ရန် ဟုတ်မဟုတ်ဖြစ်ပါသည်။

ဝါကျဖွဲ့ပုံ

phpspl_autoload_register(callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]);

နမူနာ

အလိုအလျောက်တင်သွင်းခြင်း လုပ်ဆောင်ချက်ကို ရိုးရှင်းစွာ မှတ်ပုံတင်ခြင်း

php<?php
  function my_autoloader($class) {
    include 'classes/' . $class . '.php';
  }
  
  spl_autoload_register('my_autoloader');
  
  // ယခု object များကို ရှင်းလင်းစွာ include မလိုဘဲ ဖန်တီးနိုင်ပါသည်
  $obj = new MyClass();
?>

နမူနာ

အလိုအလျောက်တင်သွင်းခြင်းအတွက် အမည်မဲ့လုပ်ဆောင်ချက် (anonymous function) အသုံးပြုခြင်း

php<?php
  spl_autoload_register(function ($class) {
    include 'lib/' . str_replace('\\', '/', $class) . '.php';
  });
  
  $obj = new Some\Namespace\MyClass();
?>

နမူနာ

အလိုအလျောက်တင်သွင်းခြင်း လုပ်ဆောင်ချက်များစွာကို မှတ်ပုံတင်ခြင်း

php<?php
  spl_autoload_register('autoloader1');
  spl_autoload_register('autoloader2');
  spl_autoload_register('autoloader3', true, true); // တန်းစီစာရင်း၏အစတွင် ထည့်သွင်းခြင်း
  
  // PHP သည် လုပ်ဆောင်ချက်များကို ဤအစဉ်အတိုင်းခေါ်ယူပါမည်: autoloader3, autoloader1, autoloader2
  $obj = new MyClass();
?>

ဤအကြောင်းကိုလည်း ကြည့်ရှုပါ

  • spl_autoload_functions ဖန်ရှင်၊
    အလိုအလျောက်တင်သွင်းခြင်း လုပ်ဆောင်ချက်များကို ပြန်ပေးသည့် ဖန်ရှင်
  • spl_autoload_unregister ဖန်ရှင်၊
    အလိုအလျောက်တင်သွင်းခြင်း လုပ်ဆောင်ချက်ကို ဖျက်သိမ်းသည့် ဖန်ရှင်
  • class_exists ဖန်ရှင်၊
    အတန်းရှိမရှိ စစ်ဆေးသည့် ဖန်ရှင်