2014-02-12 1 views
3

Я изучаю использование APC в PHP. Я создал этот сценарий, чтобы проверить:APC __PHP_Incomplete_Class_Name

<?php 

require 'Person.php'; 

if (!$p = apc_fetch('p')) { 
    $p = new Person('larry'); 
    apc_store('p', $p); 
} 

echo $p->getName(); 

где Person.php является:

<?php 

class Person 
{ 
    private $_name; 

    public function __construct($_name) 
    { 
     $this->_name = $_name; 
    } 

    /** 
    * @param mixed $name 
    */ 
    public function setName($_name) 
    { 
     $this->_name = $_name; 
    } 

    /** 
    * @return mixed 
    */ 
    public function getName() 
    { 
     return $this->_name; 
    } 
} 

Он отлично работает, но сохраненное значение в АРС:

__PHP_Incomplete_Class::__set_state(array(
'__PHP_Incomplete_Class_Name' => 'Person', 
'_name' => 'larry', 
)) 

это нормально ? или есть что-то не так с «__PHP_Incomplete_Class_Name»

Спасибо

+0

Где проблема? – Ibu

+1

1) Не изучайте APC, он заменен OPCache. 2) Нет проблем. –

+0

ibu, вот в чем вопрос, я не знаю, является ли проблема __PHP_Incomplete_Class_Name проблемой или нет? – itrascastro

ответ

2

Пока я не знаю, APC, __PHP_Incomplete_Class_Name обычно вызывается пытается получить доступ к объекту, если вы не имеете определение для класса

Вы часто видите это при вызове session_start перед тем, как включить или потребовать свои структуры классов, или неэтериализовать что-то, когда у вас нет его определения.

Убедитесь, что вы загружаете определение класса (включая или требуете) перед тем, как получить доступ к нему, когда вы загружаете обратно из APC, и я думаю, все должно быть хорошо.

1

У этой проблемы была одна и та же проблема ... Проблема заключается не в том, как вы сохраняете, проблема в том, что когда вы читаете объект, php пытается получить доступ к названию объекта и его конструкциям, но не находит Это. Попробуйте просто добавить свой запрос «Person.php»; на странице, которую вы хотите прочитать свойства объекта, и посмотрите, работает ли это. Надеюсь, поможет.