Hallo zusammen! *Überschrift sollte Autoload Frage heißen *
Ich beschäftige mich eigentlich nicht mit OOP (werde aber im laufe der Zeit es zielstrebig lernen). Jetzt wollte ich meine Verzeichnisse und die Include Dateien schützen mit Autoloader.
Ich habe diese 2 Scripts gefunden:
autoloader.php
[PHP]<?php
/**
- Defines the methods any actual locators must implement
- @package Autoloader
- @author Chris Corbyn
/
interface Locator
{
/*- Inform of whether or not the given class can be found
- @param string class
- @return bool
/
public function canLocate($class);
/* - Get the path to the class
- @param string class
- @return string
*/
public function getPath($class);
}
/**
-
The main service locator.
-
Uses loosely coupled locators in order to operate
-
@package Autoloader
-
@author Chris Corbyn
/
class Autoloader
{
/*- Contains any attached service locators
- @var array Locator
*/
protected static $locators = array();
/**
- Attach a new type of locator
- @param object Locator
- @param string key
/
public static function attach(Locator $locator, $key)
{
self::$locators[$key] = $locator;
}
/* - Remove a locator that’s been added
- @param string key
- @return bool
/
public static function drop($key)
{
if (self::isActive($key))
{
unset(self::$locators[$key]);
return true;
}
else return false;
}
/* - Check if a locator is currently loaded
- @param string key
- @return bool
/
public static function isActive($key)
{
return array_key_exists($key, self::$locators);
}
/* - Load in the required service by asking all service locators
- @param string class
*/
public static function load($class)
{
foreach (self::$locators as $key => $obj)
{
if ($obj->canLocate($class))
{
require_once $obj->getPath($class);
if (class_exists($class)) return;
}
}
}
}
/**
- PHPs default __autoload
- Just a wrapper to Autoloader::load()
- @package Autoloader
- @author Chris Corbyn
- @param string class
*/
function __autoload($class)
{
Autoloader::load($class);
}
?>[/PHP]
Locater.php
[PHP]
class PearLocator implements Locator
{
protected $base = ‚.‘;
public function __construct($directory='.')
{
$this->base = (string) $directory;
}
public function canLocate($class)
{
$path = $this->getPath($class);
if (file_exists($path)) return true;
else return false;
}
public function getPath($class)
{
return $this->base . '/' . str_replace('_', '/', $class) . '.php';
}
}
[/PHP]
Nehmen wir an ich möchte in meiner Index.php Datei jetzt Sachen aufrufen, wie würde ich es dann machen müssen laut dem Code; und was müsste ich beachten?
Oder empfehlt ihr mir eine andere Methode es anders zu machen?
Frage zu OOP:
Wie es ja schon oben steht, würde ich auch OOP bzw. will ich OOP lernen. Könnt ihr mir was empfehlen (Seiten,Bücher etc)? Ich denke bestimmt das hier welche gute OOP Kenntnisse Haben und bestimmt wissen was Ihr mir zu empfehlen habt. Großes Dankeschön an die, die mir helfen können!