1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

xDebug使ってたらマジカル定数__FILE__や__DIR__でエラーや期待しない動作をする

Last updated at Posted at 2020-02-26

vscodeでxDebugつかってデバッグしてるときにハマったので備忘録。
間違いなどあれば教えて下さい:bow_tone1:

現象

// ↓がtrueになるべきケースでもfalseしか返さない。
if ( file_exists( __DIR__ . '/hoge.php') ) {
}

原因

参考記事によれば、xDebugがデバッグ時にマジカル定数を動的に生成しているため。
デバッガを噛まさなければ、この問題は起きない。

__FILE__xdebug://debug-evalに評価されるし、
__DIR__xdebug:に評価される。
dirname(__FILE__)xdebug:に評価される。
dirname(__DIR__) だと、期待するパスに評価される。

dirname(__DIR__)以外の解決方法としては、先に$dir = __DIR__;と代入してしまって、動的生成の影響を受けないようにする。

ただ、dirname(__DIR__)にしても、$dir = __DIR__;にしても、コードをパット見たところ冗長な感じはするし、デバッガの都合がコードの入り込むのは違和感しかないので、好きではないなー。

参考

php - xDebug weird __DIR__ constant - Stack Overflow

php - Uncaught exception 'ErrorException' in xdebug://debug-eval - Stack Overflow

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?