2014-12-16 7 views
0

У меня есть файл в php, который может быть включен из метода класса или из глобальной области. $this будет действовать в первом случае, но не во втором.

Есть ли способ проверить, доступен ли $this? isset($this) и is_object($this), кажется, возвращают true, даже не находясь в методе класса.

+1

'$ this' резервируется слово и относится к текущему экземпляру данных CLAS, так что вы никогда не должны использовать его для вы владеете, другими целями. –

+0

Попробуйте 'if (__ CLASS __)' – AbraCadaver

+0

Вы должны поместить этот включенный код в выделенный метод класса (или признак) и всегда использовать его оттуда. включить в середине метода класса не «умный». – OIS

ответ

1

Ну, когда вы включаете файл в класс, то доступен $this. Поэтому вы должны выполнить более строгий контроль типа.

Попробуйте использовать instanceof, чтобы определить, если $this является то, что вы хотите:

if ($this instanceof MyObject) { 
    // in my class 
} else { 
    // not in my class 
} 

http://php.net/manual/en/internals2.opcodes.instanceof.php

+3

Хотя, было бы лучше использовать лучший подход ООП здесь вместо того, чтобы включать процедурный код в объектно-ориентированный код. Только мои два цента. – swatkins

+0

согласен, я говорю себе это и похоже больше, чем должен. :-) – Joan

Смежные вопросы