define 和 defined
define — 定義一個常量。定義成功,返回 true,否則返回 false
defined — 檢查某個名稱的常量是否存在。若存在,返回 true,否則返回 false
實例:
defined('YII_DEBUG') or define('YII_DEBUG', true);
//等同於:
if (!defined('YII_DEBUG')) {
define('YII_DEBUG', true);
}
關於代碼中 or 的用法:
- 邏輯運算符的運算順序是從左向右
- or 運算符的左結合性
- or 運算中,如果運算時有值爲 true,則整個表達式爲 true,後面代碼不執行
get 和 post
- post 更安全(參數不會顯示在url上),不會緩存數據,get 會將數據緩存起來
- post 發送的數據量更大,get 在url上有長度限制
- post 能發送更多的數據類型,get 只能發送 ASCII 字符
- post 比 get 慢
- post 是向服務器提交數據的一種請求,get 是向服務器發索取數據的請求
include、include_once 和 require、require_once
- include():會將指定文件讀入並執行裏面的程序
- require():會將目標文件的內容讀入,並且把自己本身代換成這些讀入的內容
- include_once()、require_once():如果該文件已經被包含,則不會再次包含
include 和 require 的區別:
- require 和 include 幾乎完全一樣,除了處理失敗的方式不同之外。
- require 在出錯時產生
E_COMPILE_ERROR
級別的錯誤,include 只產生警告E_WARNING
,換句話說,require 將導致腳本中止,而 include 腳本會繼續運行。
<?php
include 'a.php'; // 假設 a.php 並不存在,程序可以繼續執行
echo '111';
// 運行結果:
Warning: include(a.php): failed to open stream: No such file or directory
in D:\www\index.php on line 3
Warning: include(): Failed opening 'a.php' for inclusion
(include_path='.;C:\php\pear') in D:\www\index.php on line 3
111
<?php
require 'a.php'; // 假設 a.php 並不存在,程序立即停止
echo '111';
// 運行結果:
Warning: require(a.php): failed to open stream: No such file or directory
in D:\www\index.php on line 3
Fatal error: require(): Failed opening required 'a.php'
(include_path='.;C:\php\pear') in D:\www\index.php on line 3
- incdlue 與 require 的功能相同,但在用法上卻有些不同。include 是有條件包含函數,而 require 則是無條件包含函數。
// 如果變量$var爲真,則包含文件
if ($var) { include('example.php'); }
// 不管變量$var取何值,都將包含文件
if ($var) { require('example.php'); }
<?php
require 'a.php';
requrie 'a.php'; // a.php 被包含了兩次
require 'a.php';
require_once 'a.php'; // 檢查到已經包含過,不會進行第2次包含
isset 和 empty
- isset — 檢測變量
是否已定義
並且值不是 NULL
如果沒有定義或變量值爲 NULL,返回 false,否則返回 true - empty — 檢查一個變量
是否爲空
判斷一個變量是否被認爲是空的。當一個變量並不存在,或者它的值等同於FALSE,那麼它會被認爲不存在。如果變量不存在的話,empty()並不會產生警告。 empty 的重點是:是否爲空,isset 的重點是:是否已設置並且非 NULL
針對 empty()
,以下的東西被認爲是空的:(即 empty(var) 返回 true)
- “” (空字符串)
- 0 (作爲整數的0)
- 0.0 (作爲浮點數的0)
- “0” (作爲字符串的0)
- NULL
- FALSE
- array() (一個空數組)
- $var; (一個聲明瞭,但是沒有值的變量)
echo、print、print_r 和 var_dump
- echo:可以輸出一個或者多個字符串,多個值之間用逗號分隔。echo是語言結構,並不是真正的函數,沒有返回值,不能作爲表達式的一部分使用。
- print:只能打印出簡單類型變量的值(如int,string)。如果字符串成功顯示則返回 true,否則返回 false
- print_r:可以打印出複雜類型變量的值(如數組,對象),數組以括起來的鍵和值的列表顯示,並以 Array 開頭,但 print_r() 輸出布爾值和 NULL 的結果沒有意義
- var_dump:判斷一個變量的類型與長度,並輸出變量的數值,如果變量有值輸出的是變量的值並返回數據類型。var_dump 的輸出信息是最豐富的