問題タブ [magic-constants]
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はロギングイベントから行番号を取得します
ロギングクラスについてここに別の質問がありますが、呼び出し元のスクリプトの行番号をログファイルエントリに追加できるようにしたかったのです。
__Line __を見たことがありますが、これにより、これが存在する行の行番号がわかります。
例:
a.php
これで、debug()のLogger.phpクラスで、たとえば行#300で__Line__マジック定数を使用します。スクリプトを実行すると、ログエントリに「20行目」と表示されますが、「300行目」と表示されます。関数に行番号を渡す以外に、これを行う方法は他にありますか?
デバッグクラス関数の例
編集:debug_backtrace()はうまく機能します!!! 以下での作業
php - PHP のマジック定数の使用に関するベスト プラクティス
__LINE__
、__FILE__
、__FUNCTION__
、__CLASS__
などの PHP のマジック定数を使用するためのベスト プラクティスは何__METHOD__
ですか?
たとえば、次のように SQL エラーを特定するために__LINE__
とを使用します。__CLASS__
これは容認できる慣行ですか?
php - PHPの__DIR__マジック定数に相当するPython?
PHPでは、__DIR__
マジック定数は、その定数が含まれているファイルを含むディレクトリへのパスに評価されます。
Pythonに同等の機能はありますか?
php - include()から呼び出しファイル名を取得します
含まれているファイルの中から別のファイルを含むファイルの名前を取得したい。
マジック定数があることは知っていますが、インクルードファイルではなくインクルードファイル__FILE__
の名前が返されるため、役に立ちません。
これを行う方法はありますか?それとも、PHPの解釈方法が原因で不可能ですか?
php - マジック定数__DIR__を評価または展開せずにphp配列を作成または開く方法
config.php という名前の php 配列である構成ファイルがあります。
次に、この構成ファイルを使用したいときはいつでも、config.php をインクルードします。この方法で構成ファイルを作成するのも非常に簡単です。
しかし、魔法の定数DIRを展開せずに構成ファイルに書き込めるようにしたいと思います。これまでのところ、これを行う方法を思いつくことができませんでした。recursiveArrayReplace メソッドを作成してパス全体を削除し、それを
しかし、それは常に
その場合、実行時に展開されません。
どうすれば書けますか
php - クラス内の特性の再定義された名前の PHP マジック定数を知っている人はいますか?
簡単にするために、PHP は、クラス内で変更されたトレイトの名前を決定するための魔法の定数を提供していないように見えることに気付きました。これは言葉ではわかりにくいので、例を挙げます。比較的簡単で、新しい PHP 5.5 のどこかにあると予想されるため、それを行う方法がわかりません。だからここにあります:
クラス内の関数と競合する特性を使用するクラスがあるとします。例:
明らかに、このクラスには「SomeFunction」関数があり、含まれている SomeTrait の内部には、このクラス内にある関数と名前が一致する関数があることがわかっています。さて、「SomeFunction」は\Name\Space内の特性を介してこのクラスに入ったので、これら2つの関数は2つの異なることを行いますが、たまたま同じ名前を使用し、別の関数または文字通り「SomeFunction」の内部で使用します、次に、「NewFunctionName」で呼び出すことにより、トレイトから「SomeFunction」を使用します。
上記のシナリオでの私の質問は次のとおりです。\Name\Space\SomeTrait\SomeFunction() 内で、この特性関数も割り当てられた "NewFunctionName" を取得するにはどうすればよいでしょうか? __ FUNCTION __、または__ METHOD __、または__ TRAIT __などの魔法のメソッドを使用すると考える人もいるでしょうが、これらのいずれも期待される結果をもたらさない場合を除きます。パラメータとして機能し、ハッキーなコードになりますか? PHP 5.6 では、新しい Magic Constant __ AS __を追加するか、 __ TRAITの結果を調整する必要があるかもしれません。__ 、 __ TRAIT __と__ FUNCTION _が同じ情報 (またはほぼ同じ情報) を返す必要がある理由がわかりません。それが型にはまらないハッキーな方法である場合、どんな助けも素晴らしいでしょう。これに関するphpでバグレポートを開くことができるまで、私のオプションを見てみたいと思います。(本当にバグなら)
編集:
私の現在の、最もハッキーでない方法は、
機能しますが、特に関数を頻繁に使用する場合は、単純な文字列を取得するために多くのことをしていると思います。:/
php - PHP マジック定数が機能しない
この PHP コードを入力すると、魔法の定数_LINE_
がそのまま出力されます。
出力:
私は何を間違っていますか?
php - Xdebug の奇妙な __DIR__ 定数
YAML ファイルをロードする PHP CLI アプリを作成しています。Xdebug セッション内でこれを実行しようとすると、次のようになります。
__DIR__
allways は、常にfromxdebug:
につながるものです。false
file_exists()
回避策はありますか?
php - ドキュメント ルートを基準とした現在の PHP スクリプトのパス
TL;DRinclude
: PHP のコマンドに含まれるページで相対リンクを使用しようとする場合、このページの最後のコード サンプルに代わるものは何ですか?
include()
ドキュメントにリンクするファイルを作成しようとしていますが.css
、問題は、複数の (異なる) ディレクトリからこのファイルを含める必要があることです。私のディレクトリ構造は次のようになります。
(私はheader.php
両方のindex.php
ファイルに含めています。header.php
は参照するファイルですstyle.css
(ブラウザが見つけられる必要があります)。例: を使用する../css/style.css
と、CSS は my に表示されますcontent/index.php
が、 my には表示されませんcontent/posts/index.php
。ブラウザが探しているためです) content/css/index.php
.)
Web サイトは、ドキュメント ルート自体ではなく、ドキュメント ルートのサブディレクトリに配置された場合にも機能するはずです。このため、/css/style.css
(サーバー ルートに対して) を使用して CSS スタイルシートにリンクすることはできません。
CSS ドキュメントの場所をブラウザに伝える最も簡単な方法は、おそらくドキュメント ルートからの相対パスを指定することだと思います(間違っていたら訂正してください!) 。私の Web サイトはドキュメント ルートのサブディレクトリconfig
にあると予想されるため (そして、ファイルを使用してサブディレクトリを保存することは避けたい)、Web サイトがあるサブディレクトリの相対パスを見つける必要があります。getpath.php
私のウェブサイトのルート ディレクトリ (ドキュメント ルートではない) で呼び出されるファイル。そのファイルには、次のように書きました。
content/index.php
ただし、これにより、インクルード ファイル ( ) ではなく、ユーザーがブラウザーで要求した PHP ファイル (例 ) の相対ディレクトリが得られることに気付きましたgetpath.php
。PHP_SELF
に基づいていることも読んだことがありますREQUEST_URI
が、これは安全ではありません。私はここでこの解決策を見つけました:
それは完全にうまく機能しますが、これを行うための「より良い」方法があるかどうか疑問に思っています。そのための変数を見つけることができませんでした — 上記の解決策が本当にそれを行う唯一の方法ですか?
前のコード例を使用する必要がありますか、それともより良い方法がありますか?
ディレクトリ構造を変更する必要がありますか? 他の人はこの問題をどのように解決しますか?
編集: Web サーバーに複数の (完全に独立した) Web サイトがあり、それらはすべてドキュメント ルートのサブディレクトリ (、、... など/documentroot/project1/
)/documentroot/project2/
に
あり、Web サイトをサブディレクトリで動作させようとしています。もちろん、CSS を 経由/css/style.css
でブラウザーに送信することもできますが、Web サイトがサブディレクトリにある場合は機能しません。また、構成ファイルを使用して、ドキュメント ルートに対するプロジェクトの相対パスを指定することも避けたいと考えています。
別の編集:問題は、私のプロジェクトのすべてのphpファイルに、/documentroot/project1
PHPのinclude
機能を使用してナビゲーションバーが含まれていることです。ナビゲーション バーは として保存され、ナビゲーション バー/documentroot/project1/php/header.php
の css はとして保存され/documentroot/project1/css/style.css
ます。相対リンクを使用する場合 (ブラウザーに場所を伝えるためstyle.css
)、ブラウザーはパスがindex.php
ではなく相対パスheader.php
であると認識し、 と同じディレクトリで CSS を検索しますindex.php
。
問題: 異なるディレクトリに複数の index.php ファイルがあり、index.php
ファイルを含むすべてのディレクトリに CSS フォルダーをコピー & ペーストしたくありません。