Plop
A simple logging library for PHP
Autoloader.php
1 <?php
2 /*
3  This file is part of Plop, a simple logging library for PHP.
4 
5  Copyright © 2010-2014 François Poirotte
6 
7  Plop is free software: you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation, either version 3 of the License, or
10  (at your option) any later version.
11 
12  Plop is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with Plop. If not, see <http://www.gnu.org/licenses/>.
19 */
20 
21 namespace Plop;
22 
28 {
30  protected static $instance;
31 
33  protected function __construct()
34  {
35  }
36 
38  public function __clone()
39  {
40  throw new \Exception('Cloning this class is forbidden');
41  }
42 
49  public static function register()
50  {
51  if (self::$instance === null) {
52  self::$instance = new static();
53  spl_autoload_register(array(self::$instance, 'load'));
54  }
55  }
56 
72  public function load($class)
73  {
74  $class = ltrim($class, '\\');
75  if (strncasecmp($class, 'Plop\\', 4)) {
76  return false;
77  }
78 
79  if (strpos($class, '://') !== false) {
80  throw new \Exception('Possible exploitation attempt detected');
81  }
82 
83  $class = str_replace(array('_', '\\'), DIRECTORY_SEPARATOR, substr($class, 5));
84  require_once(__DIR__ . DIRECTORY_SEPARATOR . $class . '.php');
85  return true;
86  }
87 }
__clone()
This class may not be cloned.
Definition: Autoloader.php:38
static $instance
Singleton to prevent multiple registrations.
Definition: Autoloader.php:30
An autoloader for Plop&#39;s classes.
Definition: Autoloader.php:27
__construct()
Prevent direct construction of this class.
Definition: Autoloader.php:33