コンセプト
定数は、長期的に持続する値として理解できます。定数値が定義された後は、スクリプト内の他の場所では変更できません。
1. 定数の構成
定数の書き方はdefine(定数名、定数)です
注:
定数名は小文字でも構いませんが、通常は大文字でも構いません
引用符は付けませんが、通常は引用符で囲みます。
文字列内の定数を呼び出す場合は、引用符の外側にある必要があります
定数名には文字とアンダースコアのみを使用することをお勧めします
定数を定義して呼び出してみましょう:
例:
<?php //定义一个常量 define('Name','PHP.com'); //正确的调用方式 echo '我们是'.Name; echo '<br/>'; //错误的调用方式 echo '我们是Name'; ?>
次に、定数に関するいくつかのステートメントを検証してみましょう
例:
<?php //其实可以小写,但是不好区分出来,所以习惯上大家都大写 define('age',27); echo age; //常量可以在外面不加引号 define(A,'安徽省'); echo A; //只能用于标量,用于其他会报错,例如数组 define('HF',array(1,2,3)); echo HF; ?>
注 1: 定数の定義は引用符で囲まれていないため、通常どおり出力できますが、PHP は定義が標準化されていないことを通知します。ここでは Ntice
PHP 設定ファイルを変更することで解決できます。興味がある場合は、検索して自分で解決してみてください。
注2: 前述の7つのデータ型は、大きく3つのカテゴリに分類することもできます
スカラーデータ型: ブール、整数、浮動小数点、文字列
複合データ型: 配列、オブジェクト
特別なデータ型: NUll、リソースタイプ、コールバック関数
注 3: 定数が定義されると、それはデフォルトでグローバル変数となり、実行中のスクリプト全体のどこでも使用できます。
2. いくつかの組み込み定数
システムはいくつかの組み込み定数も用意しています。これらの定数を指定します。最初にいくつかのシステム定数について学びましょう。前編で学習したシステム定数がさらに増えました。開始したら、それらを徐々に追加して学習していきます。
定数名 | 説明 |
__LINE__ | 現在の行 |
__FILE__ | サーバー上の現在のファイルのパス |
__FUNCTIOIN__ | 現在の関数名 S__class__ |
現在のクラス名 | __Method__ |
現在のメンバーメソッド名 | |
PHP オペレーティング システム | |
現在のPHPバージョン | |
php5.4で追加されたトレイト名 | |
ファイルが配置されているディレクトリ
| __NAMESPACE__ |
現在の名前空間の名前(大文字と小文字が区別されます) | 例: <?php //输出当前所在行 echo __LINE__; echo "<br/>"; //输出当前文件所在服务器的路径 echo __FILE__; echo "<br/>"; //输出当前PHP运行的操作系统 echo PHP_OS; ?> 注: いくつかはまだ学習していないので、次の章で詳しく紹介します 3.セキュリティメカニズムを作成するためのdefine()関数ここでの知識は理解のためのものです。関数を学習した後、コードのこの部分をもう一度見ることができます。 関数: 関数の括弧の後に定数を渡します。定数が定義されている場合は true を返し、そうでない場合は false を返します 仮説:
1.version.php ファイル コードは次のとおりです: <?php //此处是检查是否是否授权的业务部份代码xxxx define('AUTH',true); //略过模拟代码xxx行 ?>2.ser.php コードは次のとおりです: <?php //尝试将include 'version.php'这一行代码注释后再执行看看,对比结果 include 'version.php'; if(!defined('AUTH')){ echo '非法!非法!你尝试跳过授权文件'; exit; }結果は、version.php が必要であるということです。含まれる場合は、次のエコー「ユーザー登録」が表示されません。 注: 関数: include('ファイルパスとファイル名を渡す') 関数: この関数の機能は、パスを指定したファイルに記述してPHPにインクルードさせて実行してください
<?php
//定义一个常量
define('Name','PHP.com');
//正确的调用方式
echo '我们是'.Name;
echo '<br/>';
//错误的调用方式
echo '我们是Name';
?> なし |