BxDolFactoryObject.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php defined('BX_DOL') or defined('BX_DOL_INSTALL') or die('hack attempt');
  2. /**
  3. * Copyright (c) UNA, Inc - https://una.io
  4. * MIT License - https://opensource.org/licenses/MIT
  5. *
  6. * @defgroup UnaCore UNA Core
  7. * @{
  8. */
  9. /**
  10. * Base class for classes with implement object instance
  11. */
  12. abstract class BxDolFactoryObject extends BxDolFactory implements iBxDolFactoryObject
  13. {
  14. protected $_oDb;
  15. protected $_oTemplate;
  16. protected $_sObject;
  17. protected $_aObject;
  18. protected function __construct($aObject, $oTemplate = null, $sDbClassName = '')
  19. {
  20. parent::__construct();
  21. $this->_aObject = $aObject;
  22. $this->_sObject = $aObject['object'];
  23. $this->_oTemplate = $oTemplate ? $oTemplate : BxDolTemplate::getInstance();
  24. if ($sDbClassName)
  25. $this->_oDb = new $sDbClassName($this->_aObject);
  26. }
  27. /**
  28. * Get object instance by object name
  29. * @param $sObject object name
  30. * @return object instance or false on error
  31. */
  32. public static function getObjectInstanceByClassNames($sObject, $oTemplate, $sClassName, $sDbClassName)
  33. {
  34. if(isset($GLOBALS['bxDolClasses'][$sClassName . '!' . $sObject]))
  35. return $GLOBALS['bxDolClasses'][$sClassName . '!' . $sObject];
  36. $aObject = $sDbClassName::getObject($sObject);
  37. if (!$aObject || !is_array($aObject))
  38. return false;
  39. $sClass = $sClassName;
  40. if(!empty($aObject['class_name']) || !empty($aObject['override_class_name'])) {
  41. $sClass = !empty($aObject['class_name']) ? $aObject['class_name'] : $aObject['override_class_name'];
  42. if(!empty($aObject['class_file']) || !empty($aObject['override_class_file']))
  43. require_once(BX_DIRECTORY_PATH_ROOT . (!empty($aObject['class_file']) ? $aObject['class_file'] : $aObject['override_class_file']));
  44. }
  45. $o = new $sClass($aObject, $oTemplate);
  46. return ($GLOBALS['bxDolClasses'][$sClassName . '!' . $sObject] = $o);
  47. }
  48. /**
  49. * Get current object name
  50. */
  51. public function getObjectName()
  52. {
  53. return $this->_aObject['object'];
  54. }
  55. }
  56. /** @} */