問題タブ [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.

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

php - PHPはロギングイベントから行番号を取得します

ロギングクラスについてここに別の質問がありますが、呼び出し元のスクリプトの行番号をログファイルエントリに追加できるようにしたかったのです。

__Line __を見たことがありますが、これにより、これが存在する行の行番号がわかります。

例:

a.php

これで、debug()のLogger.phpクラスで、たとえば行#300で__Line__マジック定数を使用します。スクリプトを実行すると、ログエントリに「20行目」と表示されますが、「300行目」と表示されます。関数に行番号を渡す以外に、これを行う方法は他にありますか?

デバッグクラス関数の例

編集:debug_backtrace()はうまく機能します!!! 以下での作業

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

php - PHP のマジック定数の使用に関するベスト プラクティス

__LINE____FILE____FUNCTION____CLASS__などの PHP のマジック定数を使用するためのベスト プラクティスは何__METHOD__ですか?

たとえば、次のように SQL エラーを特定するために__LINE__ とを使用します。__CLASS__

これは容認できる慣行ですか?

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

php - PHPの__DIR__マジック定数に相当するPython?

PHPでは、__DIR__マジック定数は、その定数が含まれているファイルを含むディレクトリへのパスに評価されます。

Pythonに同等の機能はありますか?

0 投票する
4 に答える
15384 参照

php - include()から呼び出しファイル名を取得します

含まれているファイルの中から別のファイルを含むファイルの名前を取得したい。

マジック定数があることは知っていますが、インクルードファイルではなくインクルードファイル__FILE__の名前が返されるため、役に立ちませ

これを行う方法はありますか?それとも、PHPの解釈方法が原因で不可能ですか?

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

php - マジック定数__DIR__を評価または展開せずにphp配列を作成または開く方法

config.php という名前の php 配列である構成ファイルがあります。

次に、この構成ファイルを使用したいときはいつでも、config.php をインクルードします。この方法で構成ファイルを作成するのも非常に簡単です。

しかし、魔法の定数DIRを展開せずに構成ファイルに書き込めるようにしたいと思います。これまでのところ、これを行う方法を思いつくことができませんでした。recursiveArrayReplace メソッドを作成してパス全体を削除し、それを

しかし、それは常に

その場合、実行時に展開されません。

どうすれば書けますか

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

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でバグレポートを開くことができるまで、私のオプションを見てみたいと思います。(本当にバグなら)

編集:

私の現在の、最もハッキーでない方法は、

機能しますが、特に関数を頻繁に使用する場合は、単純な文字列を取得するために多くのことをしていると思います。:/

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

php - PHP マジック定数が機能しない

この PHP コードを入力すると、魔法の定数_LINE_がそのまま出力されます。

出力:

私は何を間違っていますか?

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

php - Xdebug の奇妙な __DIR__ 定数

YAML ファイルをロードする PHP CLI アプリを作成しています。Xdebug セッション内でこれを実行しようとすると、次のようになります。

__DIR__allways は、常にfromxdebug:につながるものです。falsefile_exists()

回避策はありますか?

0 投票する
4 に答える
9280 参照

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.phpPHP_SELFに基づいていることも読んだことがありますREQUEST_URIが、これは安全ではありません。私はここでこの解決策を見つけました:

それは完全にうまく機能しますが、これを行うための「より良い」方法があるかどうか疑問に思っています。そのための変数を見つけることができませんでした — 上記の解決策が本当にそれを行う唯一の方法ですか?

前のコード例を使用する必要がありますか、それともより良い方法がありますか?
ディレクトリ構造を変更する必要がありますか? 他の人はこの問題をどのように解決しますか?


編集: Web サーバーに複数の (完全に独立した) Web サイトがあり、それらはすべてドキュメント ルートのサブディレクトリ (、、... など/documentroot/project1/)/documentroot/project2/
あり、Web サイトをサブディレクトリで動作させようとしています。もちろん、CSS を 経由/css/style.cssでブラウザーに送信することもできますが、Web サイトがサブディレクトリにある場合は機能しません。また、構成ファイルを使用して、ドキュメント ルートに対するプロジェクトの相対パスを指定することも避けたいと考えています。


別の編集:問題は、私のプロジェクトのすべてのphpファイルに、/documentroot/project1PHPの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 フォルダーをコピー & ペーストしたくありません。