Как я могу связаться по сокетам TCP от JavaScript?

Примечание: попытка получить свойство ошибки, отличной от объекта

Случается, когда вы пытаетесь получить доступ к объекту объекта, пока нет объекта.

Типичный пример для non-object notice будет

$users = json_decode('[{"name": "hakre"}]');
echo $users->name; # Notice: Trying to get property of non-object

В этом случае $users представляет собой массив (а не объект), и он не имеет никаких свойств.

Это похоже для доступа к несуществующему индексу или ключу массива (см. Примечание: Undefined Index ).

Этот пример значительно упрощен. Чаще всего такое уведомление сигнализирует неконтролируемое возвращаемое значение, например. когда библиотека возвращает NULL, если объект не существует или просто неожиданное значение, отличное от объекта (например, в результате Xpath, структуры JSON с непредвиденным форматом, XML с неожиданным форматом и т. д.), но код не проверяет такой условие.

Поскольку эти не-объекты часто обрабатываются дальше, часто возникает фатальная ошибка при вызове метода объекта для не-объекта (см.: Неустранимая ошибка: вызов члену function ... на не-объекте ), останавливая скрипт.

Его можно легко предотвратить, проверив условия ошибки и / или переменную, соответствующую ожиданию. Здесь такое уведомление с примером DOMXPath:

$result  = $xpath->query("//*[@id='detail-sections']/div[1]");
$divText = $result->item(0)->nodeValue; # Notice: Trying to get property of non-object

Проблема заключается в доступе к свойству nodeValue первого поля, пока он не был проверен, существует ли он или нет в $result коллекция. Вместо этого он платит, чтобы сделать код более явным, назначив переменные объектам, на которых работает код:

$result  = $xpath->query("//*[@id='detail-sections']/div[1]");
$div     = $result->item(0);
$divText = "-/-";
if ($div) {
    $divText = $div->nodeValue;
}
echo $divText;

Связанные ошибки:

24
задан Daniel Vassallo 5 October 2010 в 14:45
поделиться

2 ответа

Вот реализация с аналогичным подходом:

Это использует Апплет Java и соединяет его API мостом к JavaScript, интересному...

И здесь другой:

Этот - обертка API Сокета Actionscript 3, соединенного мостом к JavaScript...

11
ответ дан CMS 28 November 2019 в 23:34
поделиться

jSocket и Поток является двумя опциями, которые используют встроенные сокеты XML Flash, хотя ни один, кажется, не готов к производству. Я склонился бы к использованию основанного на Flash решения, а не Java, как проникновение браузера является выше и обычно предлагает лучший пользовательский опыт (время загрузки & устойчивость).

6
ответ дан pix0r 28 November 2019 в 23:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: