問題タブ [heredoc]

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.

0 投票する
2 に答える
6066 参照

bash - ヒアドキュメントを使用して bash にパスワードを入力できますか?

RSA認証については知っていますが、私の目的のために、ヒアドキュメントを使用してパスワードを指定したいと考えています。次のようなものが欲しいのですが、うまくいきません。これは可能ですか?

これを試してみると、次のようになります。

編集:

bmargulies の回答に基づいて、スクリプトを作り直して、次のように思いつきました。

0 投票する
8 に答える
7516 参照

php - 非常に単純な PHP テンプレート...これは「eval」なしで機能しますか?

更新 -すべての応答に感謝します。このQはややこしくなってきているので、誰かが興味を持っているなら続編を始めました.


私は友人のために簡単なスクリプトをまとめていましたが、PHP でテンプレートを作成するための非常に簡単な方法を見つけました。

基本的には、HTML ドキュメントをヒアドキュメント文字列として解析することを目的としているため、その中の変数は PHP によって展開されます。

パススルー関数を使用すると、式の評価と、文字列内の関数および静的メソッドの呼び出しが可能になります。

ヒアドキュメント文字列内のドキュメントを解析するコードは、とてつもなく単純です。

唯一の問題は、それが使用することevalです。

質問

  • evalを使用せずに、パーサーや大量の正規表現の狂気を追加せずに、この種のテンプレートを作成する方法を考えられる人はいますか?

  • 完全なパーサーを作成せずに、PHP 変数に属さない迷子のドル記号をエスケープするための提案はありますか? 漂遊ドル記号の問題により、このアプローチは「真剣に」使用できなくなりますか?


テンプレート化された HTML コードのサンプルを次に示します。

テンプレートを使用する理由


PHP でテンプレート レイヤーを作成する必要があるかどうかについては、いくつかの議論がありましたが、確かに、PHP は既にテンプレート作成に優れています。

テンプレートが役立ついくつかの簡単な理由:

  • あなたはそれを制御することができます

    インタープリターに渡す前にファイルを前処理すると、ファイルをより細かく制御できます。何かを挿入したり、パーミッションをロックダウンしたり、悪意のある php / javascript をスクレイピングしたり、キャッシュしたり、xsl テンプレートを介して実行したりできます。

  • 優れた MVC 設計

    テンプレート化により、モデルとコントローラーからのビューの分離が促進されます。

    ビュー内のタグにジャンプしたり、<?php ?>タグからジャンプしたりすると、怠惰になり、データベース クエリを実行したり、他のサーバー アクションを実行したりしやすくなります。上記のような方法を使用すると、「ブロック」(セミコロンなし) ごとに 1 つのステートメントしか使用できないため、そのトラップに引っかかるのははるかに困難です。<?= ... ?>ほとんど同じ利点がありますが...

  • 短いタグが常に有効になっているわけではありません

    ...そして、アプリをさまざまな構成で実行したいと考えています。

私が最初にコンセプトを一緒にハックするとき、それは 1 つの php ファイルとして始まります。<?phpしかし、それが大きくなる前に、すべてのphpファイルの最初と?>最後に1つだけがあり、できればすべてがコントローラー、設定、画像サーバーなどを除くクラスである場合を除き、満足できません.

ビューにあまり PHP を入れたくないのは、デザイナーが混乱するからです。

これは、プログラマーが見るには十分に困難です。平均的なグラフィック デザイナーは、それに近づくことはできません。このようなものは、対処がはるかに簡単です。

プログラマーは厄介なコードを html から除外したので、デザイナーはデザインの魔法を働かせることができます。わーい!

クイックアップデート

みんなのアドバイスを考慮して、ファイルを前処理するのが最善だと思います。中間ファイルは、テンプレートをシンタックス シュガーにして、通常の "php テンプレート" にできるだけ近づける必要があります。私がそれで遊んでいる間、今のところ評価はまだ残っています。ヒアドキュメントは、その役割を少し変更しました。後で詳しく書いて、いくつかの回答に返信しようとしますが、今のところ...

...

0 投票する
3 に答える
9201 参照

php - PHPでヒアドキュメント文字列を連結することは可能ですか?

通常のPHP文字列を使用すると、次のことができます。

しかし、ヒアドキュメント文字列でも同じことができますか?

0 投票する
3 に答える
13534 参照

php - phpヒアドキュメント構文内の条件文?

ヒアドキュメント内に条件付きステートメントを含めることができるかどうか疑問に思っていました。これは私のスクリプトですが、$ usernameを適切に解析しませんか?

phpコード:

これに伴う問題は、$username変数deosntがhtmlにレンダリングされることです。$ usernameのままです:))ありがとう

0 投票する
5 に答える
1328 参照

perl - これら 2 つの Perl スニペットの違いは何ですか?

なぜあなたは一方を他方よりも使用するのですか?

0 投票する
3 に答える
9963 参照

perl - EOF の前のどこにも文字列ターミネータ "str" が見つかりません

なぜこのエラーが発生するのですか?

0 投票する
1 に答える
329 参照

ruby - Rubyの目的またはここのドキュメントは何ですか?

「The Ruby Programming Language」という本のヒア ドキュメントについて読んだことがありますが、ヒア ドキュメントの目的と、それを製品コードでいつ使用するのかがわかりませんでした。誰かが説明して使用例を挙げてくれると嬉しいです。

よろしく、

0 投票する
1 に答える
709 参照

python - Python - マーカーまで出力します(PHP風)?

PHPでは、これを行うことができます:

Pythonで似たようなことをする方法はありますか?

山かっこなどのエスケープについて心配することなく、HTML の大きなチャンクをダンプしたいと考えています。

0 投票する
2 に答える
5539 参照

perl - Perl で here doc の BOLD テキストを印刷する方法は?

here doc を使用して、ユーザーの使用状況メッセージを出力しています。UNIX の man ページに似た特定の単語をBOLDで印刷する方法はありますか。Unixでこれを使用しています。here doc で Term::ANSIColor (または他の方法?) を使用する方法はありますか?

0 投票する
1 に答える
390 参照

perl - Perl関数で自由形式のテキストを印刷しますか?

Perlのサブルーチンで自由形式のテキストを印刷しようとすると、非常に奇妙なエラーが発生します。以下は私が呼んでいるコードです

奇妙なことに、これは私の関数のメインでのみ機能します。関数呼び出しに入れるとすぐに、次のエラーが発生します。

つまり、HEADERはありますが、見つかりません。関数(サブルーチン)内で自由形式のテキストを使用できませんか?