PHP self::$abc,如果$abc是一个拼凑变量,怎么办?
<code>class Errors extends Object { public static $message, $code; const SYSTEM_CODE = 'system'; const SYSTEM_MESSAGE = 'system error'; public static function set($code, $params = []) { $error_code = strtoupper($code) . '_CODE'; $error_message = strtoupper($code) . '_MESSAGE'; echo self::$error_message; } } </code>
Errors::set('system');
echo self::$error_message报错。
回复内容:
<code>class Errors extends Object { public static $message, $code; const SYSTEM_CODE = 'system'; const SYSTEM_MESSAGE = 'system error'; public static function set($code, $params = []) { $error_code = strtoupper($code) . '_CODE'; $error_message = strtoupper($code) . '_MESSAGE'; echo self::$error_message; } } </code>
Errors::set('system');
echo self::$error_message报错。
下面的内容是 @Tranch 这位朋友找到的.
我只是转过来.
有两种方式:
第一种是:
<?php class AA{ const BB = "HelloWorld"; const CC = "HelloWorld"; public static function set($code){ echo constant('self::' . $code); } } $key = 'BB'; AA::set($key); $key = 'CC'; AA::set($key);
constant
函数说明
另一种是
<code><?php class AA{ const BB = "HelloWorld"; } $key = 'BB'; $f = new ReflectionClass('AA'); echo $f->getConstant($key); </code>
echo self::{$error_message}
不太明白什么意思,不过。。。
//为什么要这么写呢?
echo self::$error_message;
//为什么不这么写?
echo $error_message;
你的$error_message并不是类属性啊,当然报错了,你直接echo $error_message,不就可以了,那个又不是类属性。
试试在你拼凑的变量外面加上一个{}
比如
<code>class A{ public $attr_a = 'value_a'; } $t=new A(); $attr = 'attr_a'; echo $t->{$attr}; </code>
只试过引用普通变量,没试过静态变量,手机没发调试,楼主自己试试看。
这样写
echo constant('self::' . $error_message);
<code>echo self::$error_message;</code>
改成
<code>echo $error_message;</code>
$error_message不是静态变量

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。
