Visa ett inlägg
Oläst 2012-09-13, 05:00 #9
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Jag har testat lite OOP med PHP och autoloader som jag tänkte dela med mig av:

Först min testklass:

Kod:
<?php
// File: TestAutoloader.php
// Author: Conny Westh 2012-09-13
  require_once('/lib/autoloader.php');


  try 
  {
      print "Test av autoloader.php\n";
      $c1 = new MyClass1();
      $c2 = new MyClass2();
  } 
  catch (Exception $e) 
  {
      print $e->getMessage();
  }
?>

Kod:
<?php

  class MyClass1
   {
     public static function run() { print "MyClass1 Works just fine...\n"; }
   }

  $className = 'MyClass1';
   $className::run();

?>
Kod:
<?php

  class MyClass2
   {
     public static function run() { print "MyClass2 Works just fine...\n"; }
   }

  $className = 'MyClass2';
   $className::run();

?>



Autoloader-klassen kan man lägga i en underkatalog som lämpligtvid heter LIB:
Kod:
<?php
// File: autoloader.php
// Modified by Conny Westh 2012-09-13
 class autoloader 
{
 
    public static $loader;
 
    public static function init()
     {
         if (self::$loader == NULL)
             self::$loader = new self();
 
        return self::$loader;
     }
 
    public function __construct()
     {
         spl_autoload_register(array($this,'approot'));
         spl_autoload_register(array($this,'model'));
         spl_autoload_register(array($this,'helper'));
         spl_autoload_register(array($this,'controller'));
         spl_autoload_register(array($this,'library'));
     }
 
    public function approot($class)
     {
         set_include_path(get_include_path().PATH_SEPARATOR.'/');
         spl_autoload_extensions('.php');
         spl_autoload($class);
     }
 
    public function library($class)
     {
         set_include_path(get_include_path().PATH_SEPARATOR.'/lib/');
         spl_autoload_extensions('.php');
         spl_autoload($class);
     }
 
    public function controller($class)
     {
         $class = preg_replace('/_controller$/ui','',$class);
         
        set_include_path(get_include_path().PATH_SEPARATOR.'/controller/');
         spl_autoload_extensions('.php');
         spl_autoload($class);
     }
 
    public function model($class)
     {
         $class = preg_replace('/_model$/ui','',$class);
         
        set_include_path(get_include_path().PATH_SEPARATOR.'/model/');
         spl_autoload_extensions('.php');
         spl_autoload($class);
     }
 
    public function helper($class)
     {
         $class = preg_replace('/_helper$/ui','',$class);
 
        set_include_path(get_include_path().PATH_SEPARATOR.'/helper/');
         spl_autoload_extensions('.php');
         spl_autoload($class);
     }
 
}
 
//call
 autoloader::init();
 ?>
Conny Westh är inte uppkopplad   Svara med citatSvara med citat