获取在PHP中创建对象的行和文件

时间:2016-02-15 09:34:00

标签: php

是否可以获取创建对象的行和文件? 例如。

我知道打印PHP错误输出发生错误的位置以及哪一行。是否可以使用该机制?

将文件发送到对象很简单。我可以使用basename(__FILE__)作为参数。但我更愿意,如果对象参数可以保持为空。像这样:

Foo.php

<?php

  class Foo {

    public $line = null;

    public function __construct(){

      $this->line = where_object_is_assigned

    }

  }

?>

的index.php

<?php

  $object = new Foo();
  echo $object->line // Output Index.php line 3

?>

对象是否可以在不发送的情况下访问此数据?

提前致谢

3 个答案:

答案 0 :(得分:1)

我使用函数debug_backtrace();

解决了这个问题
<?php

  class Foo {

    public $line = null;

    public function __construct(){
      $bt = debug_backtrace();
      $caller = array_shift($bt); // Get first array

      $this->line = $caller["line"];

    }

  }

?>

<强>的index.php

<?php

  $object = new Foo();
  echo $object->line // Output: 3

?>

该功能必须在__construct()中使用,否则无效。

在此处阅读更多内容:http://php.net/manual/en/function.debug-backtrace.php

答案 1 :(得分:1)

这将输出创建对象的行号

  class Foo {

    public $line = NULL;

    public function __construct($line){

      $this->line = $line;

    }

  }

Index.php

  <?php
  $object = new Foo(__LINE__); //Will output 1
  echo $object->line;

答案 2 :(得分:0)

PHP为其运行的任何脚本提供了大量预定义常量。在此范围内,您只需找到名为 LINE

的预定义常量
  

__LINE__文件的当前行号。

所以你需要在代码中使用预定义的常量,如

<?php

  class Foo {

    public $line = __LINE__;

  }

  $object = new Foo();
  echo $object->line;

?>