問題タブ [php-7]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 可変変数の処理順序: PHP 7 での変更点
新しい PHP 7.0.0 が出たので、いわゆる「可変変数」の評価順序の変更が少し心配です。
このページの「変数処理の変更点」の下に、PHP 5 および PHP 7 での処理順序を含む式の例を示す表が表示されます。リストされている 4 つの式は次のとおりです。
次の文字列と配列があるとします。
表の最初の式は$$foo['bar']['baz']
、PHP 5 では の値として名前が付けられた変数の値として解釈されます。$foo['bar']['baz']
つまり、 の値$qux
は です 'quux'
。
ただし、PHP 7 では、私が理解しているように、同じ式が の値として名前が付けられた変数として解釈され$foo
ます$foo
。
表の他の例は、これと同じテーマのバリエーションのようです。
もちろん、PHP 7 でこれが変更された理由 (具体的には、この変更が下位互換性よりも重要である理由) に興味がありますが、それは SO には適切な質問ではありません。私の質問はより実用的です:
この非互換性に対処するための推奨される方法は何ですか?
もちろん、問題のある式に中括弧を追加すると ( ${$foo['bar']['baz']}
、$foo->{$bar['baz']}
、$foo->{$bar['baz']}()
およびFoo::{$bar['baz']}()
) が役立ちますが、これは非常に面倒で、大量の古いコードを調べて、比較的少ない出現箇所を検索します...
そうでなければ、これらの 4 つの例は可能な唯一の構文のバリエーションですか? つまり、RegExp とgrep
問題のあるすべてのコードを作成できますか? 他にどのようなバリエーションが存在する可能性がありますか?
php - PHP7 での foreach の変更
foreach
PHP7 ではデフォルトで、値による繰り返しの場合、http: //php.net/manual/en/migration70.incompatible.phpに従って配列のコピーを操作します。
配列または値に変更が加えられた場合にのみコピーを遅延して作成しますか、それとも常にコピーを作成し、本質的に参照のループをパフォーマンスの最適化にしますか?
また、オブジェクトの配列はまだループオーバー/オブジェクトの参照を提供していますか? それとも、実際に のコピーも作成しforeach
、オブジェクトを値で返すのでしょうか?
php - php perl クロスプラットフォーム エンコーダー/デコーダー
以前は perl エンコーダー
php関数によってうまく復号化できます
悲しいかな、mcrypt_cbc は廃止されただけでなく、php7 から完全に姿を消しました。
標準の新しいphpデコーダmcrypt_encryptが動作するperlで推奨されるエンコーダはありますか?
私の目的のために、極秘にする必要はありません。適度な秘密は大丈夫です。生死の秘密はありません。デコードに 30 分かかる場合は、それで十分です。理想的には、正規のセキュリティ エンコーダー デコーダーを使用します (もちろん、互換性がある限り)。
アドバイスをいただければ幸いです。
php - PHP7 認定
PHP 7 がリリースされたので、PHP 5 認定を申請するべきですか、それとも PHP 7 認定がリリース/発表されるまで待つべきですか? Zend は、この認定に関してどのような計画を立てていますか?
php - PHP7 + Symfony 2.8、セッションデータの書き込みに失敗しました
私は自分でphp7をコンパイルしました(974f6c2a705)。symfony を使用して php7 + php-fpm + nginx を実行すると、次のエラーが発生します。
(セッションに snc redis バンドルを使用:)
(ネイティブセッションサポートを使用:)
phpにはフォルダーへの読み取り/書き込みアクセスがあるため、問題はsymfonyに関連しているようです。
このコードだけを実行すると、動作します:
symfony がセッションの書き込みに失敗する理由について何か提案やアイデアはありますか?
apache - PHP7 のインストールでローカルホストが壊れた
PHP7 をローカルでコンパイルしてビルドしました。php -v
私が望むすべての美しい情報を出力します。ただし、Apacheへのロードに完全に失敗しました。configure\make プロセスはほとんど私と SO でしたが、Apache にロードするために、このブログの手順に従いまし た。
完了したら、新しいバージョンの PHP を使用するように Apache をセットアップする必要があります。次の行は、元の PHP5 バージョンを無効にし、新しい PHP7 バージョンを有効にします。
それが物事がうまくいかなかったところです。本当に、それが達成したのは、ローカルの php を完全に破壊することだけでした。何らかの理由で、構成を正常にロールバックすることさえできません。phpinfo() はソース コードを表示するだけなので、php はまったく処理されていません。
現在の状況: PHP は死んでいます。
私がなりたい場所: Apache2はPHP7をロードします
誰か助けて?とても有難い!