Сохранение большой строки в php с помощью quercus
Я использую Quercus для Appengine. Я попытался сохранить длинную строку php (> 1000 символов), но appengine не позволил мне, так как String может содержать только 500 символов. Поэтому я попытался использовать тип данных Text в appengine. Тем не менее, он позволяет мне сохранять данные, когда я получаю данные из PHP, но возвращает мне тип resource() вместо строки.
Позвольте мне объяснить с помощью кода:
<?php
$a = new Text("this is a long string that contains more than 1000 characters");
$b = "this is a long string that contains more than 1000 characters";
$e = new Entity('Article');
$e->setProperty('content', $a); // this works fine
// $e->setProperty('content', $b); // will complain as strlen($b) is > 500
$db = DatastoreServiceFactory::getDatastoreService();
$id = KeyFactory::keyToString($db->put($e)); // works ok, returns the ID of Entity saved
?>
Теперь все хорошо, но когда я получу содержимое $e, он вернет мне данные типа resource().
<?php
$q = new Query('Article');
$ps = $db->prepare($q);
foreach($ps->asIterable() as $i) {
echo gettype($i->getProperty('content')); // this will echo Object, which when var_dump'd, gives me a resource() which is not convertible to php string, thus I can't get the human readable value
}
?>
Есть ли обходной путь к этому? Любая помощь очень ценится, так как я потянул за волосы в течение нескольких дней...
1 ответ
Решение
Хорошо, решил это путем преобразования объекта Java в строку
$content = $i->getProperty('content');
if(is_object($content)) {
if($content instanceof Text) {
$content = $content->getValue();
}
}