- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个抛出错误的错误处理程序:__PHP_Incomplete_Class 无法转换为字符串。
错误处理程序当前执行“is_object”测试,奇怪的是,对于“不完整”对象,该测试为假。我正在尝试调整错误处理程序,但我无法在不解析重新序列化版本的情况下获取原始类名。
<?php
$o = 'O:14:"BogusTestClass":0:{}';
$c = unserialize($o);
var_dump(
array(
'subject' => $c,
'is_object' => is_object($c), // false !?!?
'get_class' => get_class($c), // __PHP_Incomplete_Class
'gettype' => gettype($c), // 'object'
'Is instance of?' => $c instanceof __PHP_Incomplete_Class, // true
'serial' => serialize($c),
)
);
// Tried:
var_dump($c->__PHP_Incomplete_Class_Name);
// Error:
// The script tried to execute a method or access a property of
// an incomplete object
$refObj = new ReflectionObject($c);
$refProp = $refObj->getProperty('__PHP_Incomplete_Class_Name');
$refProp->setAccessible(true);
var_dump($refProp->getValue($c));
// Error:
// ReflectionProperty::getValue(): The script tried to execute a
// method or access a property of an incomplete object.
// This works, but is fragile, since it depends on internal behavior
// of serialize
function getBadClassName($subject)
{
$serial = serialize($subject);
$parts = explode(':', $serial, 4);
if ('O' === $parts[0] && strlen($parts[2]) -2 == $parts[1]) {
return substr($parts[2], 1, -1);
}
return '-- Error --';
}
var_dump(getBadClassName($c));
试图从不完整的对象中获取序列化类的名称以用于错误消息。
避免解析字符串,因为我猜测当使用重新定义序列化/反序列化的扩展时,字符串解析会崩溃,例如 http://pecl.php.net/package/igbinary或 http://pecl.php.net/package/APC/3.1.7 apc.serializer 钩子(Hook)。
最佳答案
根据建议来看
forcing access to __PHP_Incomplete_Class object properties
可以通过 foreach 和 ArrayObject 访问该属性
<?php
$array = new \ArrayObject($object);
var_dump($array['__PHP_Incomplete_Class_Name']);
关于php - 如何从不完整的类(class)中获取类(class)名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12479862/
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 6 年前。 Improve t
notificationCenterPublisher = NotificationCenter.default .publisher(for: .NSManagedObjec
我有以下 Rust 代码: #[inline(never)] fn x() -> i32 { 21 } pub fn main() -> i32 { x() } 如果没有优化 (-C
notificationCenterPublisher = NotificationCenter.default .publisher(for: .NSManagedObjec
我有以下 Rust 代码: #[inline(never)] fn x() -> i32 { 21 } pub fn main() -> i32 { x() } 如果没有优化 (-C
假设我的 ASPX 页面没有内联 C# 代码块。 所以,我可以安全地设置 ...在我的 web.config 文件中,不用担心编译错误。 就性能而言,使用以下设置是否会有任何损失? 即“自动”检测
应用程序.js var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor: 'black', l
基本上,我正在为实现多级优先级队列的 xv6 内核实现一个调度程序。我有一个严重的问题,我不明白,我类(class)的助教不明白,我已经错过了这个项目的最后期限,所以现在帮助我不会给我任何加分 - 但
我想避免 git 自动 merge 我的 composer.json。这样我就可以在 develop 分支中有一个使用 dev-develop 包的 composer.json,而 master 中的
当比较两种不同的算法实现时(因此,不关心它们的绝对性能,而只关心相对性能)我是否最好强制 Java 只运行解释代码? 也就是说,打开 -Xint 标志会更好吗? 最佳答案 我不认为禁用 JIT 会更好
class A{ const size_t number; public: A(size_t number): number(number) {} void f(){
问题 寻找在以下之间切换的方法: 总是 从不 仅在静默模式下 仅当不处于静默模式时 这些选项在手机上的路径---菜单>>设置>>声音>>振动---找到。 通过手机导航很容易更改(顺便说一句,我的手机是
如何设置电源设置关闭:从不(关闭显示器=从不,让计算机进入休眠状态=从不),通过c#代码 最佳答案 这个问题中给出的链接可以告诉你一个方法。 Programmatically change Windo
我是一名优秀的程序员,十分优秀!