سؤال

ويمكنني حاليا على ما يلي:

class SubClass extends SuperClass {
  function __construct() {
    parent::__construct();
  }
}

class SuperClass {
  function __construct() {
    // this echoes "I'm SubClass and I'm extending SuperClass"
    echo 'I\'m '.get_class($this).' and I\'m extending '.__CLASS__;
  }
}

وأود أن تفعل شيئا من هذا القبيل مع أسماء (__FILE__، ولكن حيوي تقييم)؛ أود أن أعرف ما ملف فرعية تكمن في، من الطبقة المتفوقة. هل من الممكن في أي طريقة أنيقة؟

وأنا أعلم أنك يمكن أن تفعل شيئا مع get_included_files() ، ولكن هذا ليست فعالة جدا، خصوصا إذا كان لدي حالات عديدة.

هل كانت مفيدة؟

المحلول

ويمكنك استخدام التأمل.

$ref = new ReflectionObject($this);
$ref->getFileName(); // return the file where the object's class was declared

نصائح أخرى

واه، وليس حقا، وأنني يمكن أن تفكر به. يحتاج كل فئة فرعية لطريقة تنفيذها بشكل واضح أن عاد __FILE__، التي الهزائم تماما وجهة الميراث في المقام الأول.

وأنا أيضا غريبة حقا لماذا شيئا من هذا القبيل سيكون مفيدا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top