autoload.inc.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. $object_list = array(
  3. // Native
  4. //"db_object"=>array(),
  5. "menu"=>array(),
  6. "template"=>array(),
  7. "controller"=>array(),
  8. "page"=>array(),
  9. "commonval"=>array(),
  10. // Project
  11. "account"=>array(),
  12. "activite"=>array(),
  13. "realisation"=>array(),
  14. "actualite"=>array(),
  15. "evenement"=>array(),
  16. "cat"=>array(),
  17. "partenaire"=>array(),
  18. "miniature"=>array(),
  19. "plante"=>array(),
  20. );
  21. // MANUAL ACCESSOR DEFINITION
  22. // AUTOMATIC ACCESSOR DEFINITION
  23. /**
  24. * Retrieve an objet defined
  25. *
  26. * @param string $t
  27. * @param int $params
  28. * @return db_object_manager|db_object|bool
  29. */
  30. function object($t, $params=null)
  31. {
  32. static $list;
  33. if (!$list)
  34. $list = $GLOBALS["object_list"];
  35. if (!is_string($t) || !isset($list[$t]))
  36. return;
  37. $p = &$list[$t];
  38. $n = "${t}_manager";
  39. $l = &$list[$n];
  40. // Object de gestion
  41. if (!isset($l))
  42. {
  43. if (!empty($p["cache"]) && ($object=apc_fetch($n)))
  44. {
  45. $l = $object;
  46. }
  47. else
  48. {
  49. $l = new $n();
  50. if (!empty($p["cache"]))
  51. apc_store($n, $l);
  52. }
  53. }
  54. // Renvoi de l'objet de gestion
  55. if ($params === null)
  56. {
  57. return $l;
  58. }
  59. // Renvoi si objet existant
  60. else
  61. {
  62. if ($object=$l->get($params))
  63. return $object;
  64. else
  65. return false;
  66. }
  67. }
  68. // Default definition of accessors
  69. foreach($object_list as $name=>$i)
  70. {
  71. if (!function_exists($name))
  72. {
  73. eval("function $name(\$params=null) { return object(\"$name\", \$params); }");
  74. }
  75. }
  76. /**
  77. * Autoload class function
  78. * @param string $class_name
  79. */
  80. function __autoload($class_name)
  81. {
  82. if (!is_string($class_name))
  83. return;
  84. if (substr($class_name, -11, 11) == "_controller"){
  85. if (file_exists($filename=PATH_ROOT."/include/controller/".substr($class_name, 0, -11).'.inc.php'))
  86. include $filename;
  87. else
  88. eval('class '.$class_name.' extends controller {}');
  89. }
  90. elseif ((substr($class_name, -8, 8) != "_manager" || ($class_name=substr($class_name, 0, -8))) && isset($GLOBALS["object_list"][$class_name])){
  91. if (file_exists($filename=PATH_ROOT."/include/class/$class_name.class.inc.php"))
  92. include $filename;
  93. elseif (file_exists($filename=PATH_ROOT."/include/model/$class_name.class.inc.php"))
  94. include $filename;
  95. else
  96. die('Model '.$class_name.' not found, file not found '.$filename);
  97. }
  98. elseif (file_exists($filename=PATH_ROOT."/include/class/$class_name.class.inc.php")){
  99. include $filename;
  100. }
  101. else{
  102. die('Class '.$class_name.' not found, file not found '.$filename);
  103. }
  104. }