Kom ihåg mig?
Home Menu

Menu


PHP: require, dela upp funktioner?

 
Ämnesverktyg Visningsalternativ
Oläst 2012-09-13, 05:00 #10
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
 


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 11:05.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017