是否可以获取创建对象的行和文件? 例如。
我知道打印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
?>
对象是否可以在不发送的情况下访问此数据?
提前致谢
答案 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;
?>