27trait DolDeprecationHandler
46 public function __get($name)
48 $deprecatedProperties = $this->deprecatedProperties();
49 if (isset($deprecatedProperties[$name])) {
50 $newProperty = $deprecatedProperties[$name];
51 $msg =
"DolDeprecationHandler: Accessing deprecated property '".$name.
"' on class ".get_class($this).
". Use '".$newProperty.
"' instead.".self::getCallerInfoString();
53 if ($this->isDeprecatedReportingEnabled()) {
54 trigger_error($msg, E_USER_DEPRECATED);
56 return $this->$newProperty;
58 if ($this->isDynamicPropertiesEnabled()) {
61 $msg =
"DolDeprecationHandler: Undefined property '".$name.
"'".self::getCallerInfoString();
63 trigger_error($msg, E_USER_NOTICE);
74 public function __set($name, $value)
76 $deprecatedProperties = $this->deprecatedProperties();
77 if (isset($deprecatedProperties[$name])) {
78 $newProperty = $deprecatedProperties[$name];
88 $this->$newProperty = $value;
91 if (!$this->isDynamicPropertiesEnabled()) {
92 $msg =
"DolDeprecationHandler: Undefined property '".$name.
"'".self::getCallerInfoString();
93 trigger_error($msg, E_USER_NOTICE);
94 $this->$name = $value;
96 $this->$name = $value;
106 public function __unset($name)
108 $deprecatedProperties = $this->deprecatedProperties();
109 if (isset($deprecatedProperties[$name])) {
110 $newProperty = $deprecatedProperties[$name];
119 unset($this->$newProperty);
122 if (!$this->isDynamicPropertiesEnabled()) {
123 $msg =
"DolDeprecationHandler: Undefined property '".$name.
"'.".self::getCallerInfoString();
125 trigger_error($msg, E_USER_NOTICE);
135 public function __isset($name)
137 $deprecatedProperties = $this->deprecatedProperties();
138 if (isset($deprecatedProperties[$name])) {
139 $newProperty = $deprecatedProperties[$name];
140 $msg =
"DolDeprecationHandler: Accessing deprecated property '".$name.
"' on class ".get_class($this).
". Use '".$newProperty.
"' instead.".self::getCallerInfoString();
142 if ($this->isDeprecatedReportingEnabled()) {
143 trigger_error($msg, E_USER_DEPRECATED);
145 return isset($newProperty);
146 } elseif ($this->isDynamicPropertiesEnabled()) {
147 return isset($this->$name);
149 $msg =
"DolDeprecationHandler: Undefined property '".$name.
"'.".self::getCallerInfoString();
152 return isset($this->$name);
162 public function __call($name, $arguments)
164 $deprecatedMethods = $this->deprecatedMethods();
165 if (isset($deprecatedMethods[$name])) {
166 $newMethod = $deprecatedMethods[$name];
167 if ($this->isDeprecatedReportingEnabled()) {
168 trigger_error(
"Calling deprecated method '".$name.
"' on class ".get_class($this).
". Use '".$newMethod.
"' instead.".self::getCallerInfoString(), E_USER_DEPRECATED);
170 if (method_exists($this, $newMethod)) {
171 return call_user_func_array([$this, $newMethod], $arguments);
173 trigger_error(
"Replacement method '".$newMethod.
"' not implemented.", E_USER_NOTICE);
176 trigger_error(
"Call to undefined method '".$name.
"'.".self::getCallerInfoString(), E_USER_ERROR);
185 private function isDeprecatedReportingEnabled()
189 if (property_exists($this,
'enableDeprecatedReporting')) {
191 return (
bool) $this->enableDeprecatedReporting;
194 return (error_reporting() & E_DEPRECATED) === E_DEPRECATED;
202 private function isDynamicPropertiesEnabled()
206 if (property_exists($this,
'enableDynamicProperties')) {
208 return (
bool) $this->enableDynamicProperties;
230 protected function deprecatedProperties()
246 protected function deprecatedMethods()
261 final protected static function getCallerInfoString()
263 $backtrace = debug_backtrace();
265 if (count($backtrace) >= 2) {
266 $trace = $backtrace[1];
267 if (isset($trace[
'file'], $trace[
'line'])) {
268 $msg =
" From {$trace['file']}:{$trace['line']}.";
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.