相关疑难解决方法(0)

查找已定义类的PHP文件(在运行时)

PHP中是否有任何反射/内省/魔术可以让你找到定义特定类(或函数)的PHP文件?

换句话说,我有一个PHP类的名称,或一个实例化的对象.我想将此传递给某些东西(函数,Reflection类等),它将返回定义类的文件系统路径.

/path/to/class/definition.php
Run Code Online (Sandbox Code Playgroud)

我意识到我可以使用(get_included_files())获取到目前为止已包含的所有文件的列表,然后手动解析它们,但这是一次尝试的大量文件系统访问.

我也意识到我可以在我们的__autoload机制中编写一些额外的代码来缓存这些信息.但是,在我想到的情况下,修改现有的__autoload是不受限制的.

听说可以做到这一点的扩展会很有趣,但我最终会喜欢可以在"库存"安装上运行的东西.

php reflection class

102
推荐指数
3
解决办法
5万
查看次数

PHP与APC:致命错误:无法重新声明课程

由于我使用PECL安装了APC for PHP,我有时会遇到以下错误: Cannot redeclare class xxx

xxx不时变化.我可以禁用APC,但APC可以提高性能!是否存在已知错误或我可以采取其他措施来防止这些错误?我正在使用Ubuntu 8.04 LTS和PHP 5.2.4.


编辑/更新(来自评论):

我使用Zend Framework Autoloader,在启用APC之前从未发生过这些错误.不久前我得到了这个错误:Fatal error: require(): Cannot redeclare class zend_db_adapter_abstract in /paths/app/lib/Zend/Db/Select.php on line 27

php apc

20
推荐指数
3
解决办法
2万
查看次数

你可以在Laravel 4.1中重新加载Boris而不必退出吗?

使用时php artisan tinker,我在项目中更改了一些类文件.有没有办法重新加载REPL,而不必键入exitphp artisan tinker再次?

php laravel laravel-4

12
推荐指数
1
解决办法
1440
查看次数

PHP致命错误:无法重新声明功能

我在文件B.inc中有一个函数A.

line 2:  function A() {

           ...

line 10: }
Run Code Online (Sandbox Code Playgroud)

在apache日志中:

PHP致命错误:无法在第10行的B中重新声明A()(之前在B.inc:2中声明)

php apache

11
推荐指数
1
解决办法
3万
查看次数

Php:如果没有"先前声明",如何解决"无法重新声明课程"

我想测试phpDocumentor-alpha,并且有一些人似乎没有问题:

# sudo pear uninstall phpdoc/phpDocumentor-alpha
uninstall ok: channel://pear.phpdoc.org/phpDocumentor-2.0.0a6
olivier@olivier-ubuntu ~/Documents/pizzas/dev # phpdoc --help
bash: /usr/bin/phpdoc: Aucun fichier ou dossier de ce type
# 
# sudo pear install --alldeps -f phpdoc/phpDocumentor-alpha
downloading phpDocumentor-2.0.0a6.tgz ...
Starting to download phpDocumentor-2.0.0a6.tgz (1,107,853 bytes)
..................................done: 1,107,853 bytes
install ok: channel://pear.phpdoc.org/phpDocumentor-2.0.0a6
# phpdoc --help
PHP Fatal error:  Cannot redeclare class phpDocumentor\Plugin\Core\Listener in /usr/share/php/phpDocumentor/src/phpDocumentor/Plugin/Core/Listener.php on line 194

Fatal error: Cannot redeclare class phpDocumentor\Plugin\Core\Listener in /usr/share/php/phpDocumentor/src/phpDocumentor/Plugin/Core/Listener.php on line 194
# 
Run Code Online (Sandbox Code Playgroud)

好的,我可以避免这个问题:

if ( !class_exists('MTIHelperEstadosLocal') ) …
Run Code Online (Sandbox Code Playgroud)

php

4
推荐指数
1
解决办法
3万
查看次数

PHP致命错误:无法重新声明类(包括example.php)

我需要在整个代码中多次包含对另一个php文件example.php的引用,但是我得到"PHP致命错误:无法重新声明类错误".

<?php include 'example.php'; ?>
Run Code Online (Sandbox Code Playgroud)

怎么做到这一点?

php

1
推荐指数
1
解决办法
9909
查看次数

标签 统计

php ×6

apache ×1

apc ×1

class ×1

laravel ×1

laravel-4 ×1

reflection ×1