Переводить ссылку Perl на OO PHP? - PullRequest
0 голосов
/ 02 декабря 2011

Так что я наткнулся на еще одну странность в переводе старого сценария Perl для разработчиков на Объектно-ориентированный PHP, это маленькое справочное утверждение Perl заставило меня поцарапать уже довольно долго, но я не смог понять это через Google или друзей.

Я старался изо всех сил, чтобы написать, что я думаю, но я не уверен, что это так. право. Может кто-нибудь сказать мне, если я понял это или я ухожу? Спасибо заранее.

Фрагмент Perl:

!$state->{$msg->{hash}}

Я полагаю, что это означает один из двух в OO PHP?

!$this->state[$this->msg['hash']] //or?
$this->state != $this->msg['hash']

Я вообще на стадионе?

ОБНОВЛЕНИЕ Мне сказали, что это ссылка, а не ссылка на массив, но я не уверен, так как $ msg -> {grey}, $ msg -> {hash}, $ msg-> {домен} и т. д. все существуют в одной и той же подпапке?

1 Ответ

1 голос
/ 02 декабря 2011

На самом деле, на второй взгляд, $state является некоторой хеш-ссылкой (хотя это также может быть bless ed объект некоторого класса), а $state->{$msg->{hash}} является значением %$state, соответствующимключ $msg->{hash} (который, в свою очередь, является значением %$msg, которое соответствует ключу "hash").

Итак, предполагая, что $state и $msg являются только ссылками на хеш (а не конкретные объекты), они на самом деле соответствуют массивам в PHP (одна из действительно глупых вещей в PHP заключается в том, что нет никакой разницы между массивом и ассоциативным массивом).

Таким образом, это будет !$state[$msg['hash']] в PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...