009——基礎加強

檢測變量

// 獲取變量類型
gettype()
// 是否是某種類型
is_int()
is_array()
// 變量是否存在
isset()
// 變量是否為空
empty()

打印變量

echo()// 字符串、數字
print_r()// 數組、對象
var_dump()// 打印變量的類型及其值

類型轉換

+// 轉number
.// 轉字符串
if// 轉Boolean

銷毀變量

unset()

函數

// 函數就是封裝起來的一段代碼可以隨時調用
如果有默認值參數,應該寫在最后
<?php 
    $a = 7;
    function fn(&$a) {
        return $a = $a - 1;
    }
    fn($a);
    echo $a;// 6
?>
<?php 
    $a = 7;
    function fn() {
        global $a;// 告訴去全局找
        return $a;
    }
    echo fn();
?>
<?php 
    $a = 1;
    $b = 2;
    print_r($GLOBALS);// 收集頁面中全局變量的全局數組
?>
// 動態調用函數
<?php 
    function good(){
        echo "haha";
    }
    function bad(){
        echo "wuwu";
    }
    $heart = 'good';

    $heart();
?>

時間戳函數

<?php 
    // 格林威治事件1970年1月1日00:00:00到當前的秒數
    echo time()."<br/>";
    echo microtime()."<br/>";// 微秒數和時間戳
    echo microtime(true);// 合一起輸出
?>
// 格式化時間
<?php 
    echo date('Y/m/d H:i:s');
?>
<?php 
    // 上一小時的時間
    $time = time() - 60 * 60;
    echo date('Y/m/d H:i:s', $time);
?>

讀取文件夾

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <?php
        $path = isset($_GET['dir']) ? $_GET['dir'] : '.';
        $fh = opendir($path);

        // echo $row = readdir($fh)."<br/>";// 返回文件名
        // echo $row = readdir($fh)."<br/>";// 返回文件名
        // echo $row = readdir($fh)."<br/>";// 返回文件名
        
        // closedir();
    ?>
    <h1>讀取文件夾</h1>
    <table border="1">
        <tr>
            <td>名稱</td>
            <td>操作</td>
        </tr>
        <?php while ( ($row = readdir($fh)) !== false ) {// 文件名為0時 ?>
        <tr>
            <td><?php echo $row; ?></td>
            <td>
                <a href="index.php?dir=<?php echo $path.'/'.$row; ?>">查看</a>
            </td>
        </tr>
        <?php } ?>
        <?php closedir(); ?>
    </table>
</body>
</html>

數組

// 索引數組
// 關聯數組
<?php
    $arr = array('name'=>'Aaayang', 'age'=>18);
    echo $arr['name'];
?>
// 遍歷數組
<?php
    $arr = array('a', 'b', 'c', 'd');
    for($i = 0; $i < count($arr); $i ++) {
        echo $arr[$i] . "<br/>";
    }
?>
// foreach
<?php
    $arr = array('a', 'b', 'c', 'd');
    foreach ($arr as $key => $value) {
        echo $key . '>>' . $value . "<br/>";
    }
?>
// foreach簡寫,foreach不能單循環出鍵,通過array_keys可以
<?php
    $arr = array('a', 'b', 'c', 'd');
    foreach ($arr as $value) {
        echo $value . "<br/>";
    }
?>
// array_keys
<?php
    $arr = array('a', 'b', 'c', 'd');
    print_r(array_keys($arr));// 返回數組中所有的鍵
?>
// 修改數組
<?php
    $arr = array('a'=>3, 'b'=>4, 'c'=>5);
    foreach ($arr as $key => $value) {
        $arr[$key] = $value * 2;
    }
    print_r($arr);
?>

static

<?php
    function a() {
        $a = 5;
        $a += 1;
        return $a;
    }
    echo a() . "<br/>";// 6
    echo a() . "<br/>";// 6
?>
<?php
    function a() {
        static $a = 5;
        $a += 1;
        return $a;
    }
    echo a() . "<br/>";// 6
    echo a() . "<br/>";// 7
?>
// 應用
<?php
    function openfile($file) {
        $fh = fopen($file, 'r');
        return $fh;
    }
    // 打開了3次
    print_r(openfile('.'));
    print_r(openfile('.'));
    print_r(openfile('.'));

    function openfile($file) {
        static $fh = null;// 記住了上次的$fh
        if($fh === null) {
            $fh = fopen($file, 'r');
        }
        return $fh;
    }
    // 實際打開了1次
    print_r(openfile('.'));
    print_r(openfile('.'));
    print_r(openfile('.'));
?>

<?php 

    class Comment {
        public $username;
        public $content;

        public function setUsername($username) {
            $this->username = $username;
        }
        public function getUsername() {
            return $this->username;
        }
    }

    class CommentList {
        const FilePath = "commentList.txt";

        public function getCommentList() {
            return unserialize(file_get_contents(self::FilePath));// 獲取值的姿勢
        }

        public function write($commentData) {
            $commentList = $this->getCommentList();
        }
    }

?>
// 訪問私有變量的套路
<?php 

    class Comment {
        private $username;
        public $content;

        public function set($name, $value) {
            $this->$name = $value;
        }
        public function get($name) {
            return $this->$name;
        }
    }

    // 訪問私有屬性的姿勢
    $comment = new Comment();
    $comment->set('username','Aaayang');
    echo $comment->get('username');
?>
// 魔術方法
<?php 
    
    // 魔術方法自動調用
    class Comment {
        private $username;
        public $content;

        public function __set($name, $value) {
            $this->$name = $value;
        }
        public function __get($name) {
            return $this->$name;
        }
    }

    // 有魔術方法的情況下可以直接訪問私有
    $comment = new Comment();
    $comment->username = "Aaayang";
    echo $comment->username;
?>
// 訪問類常量
<?php 
    
   class CommentList {
        const FilePath = "commentList.txt";

        public function getCommentList() {
            return unserialize(file_get_contents(self::FilePath));// 獲取值的姿勢
        }

        public function write($commentData) {
            $commentList = $this->getCommentList();
        }
    }

    // 訪問類常量
    $commentList = new CommentList();
    echo $commentList::FilePath;
?>
// 靜態屬性和方法不需要實例化可以直接調用
<?php
    
    class Tools {
        public static $titleTemp = 'Aaayang';// 靜態屬性屬于類本身,不需要實例化就能調用

        public static function parseTitle($title) {// 靜態方法中不能調用非靜態屬性和非靜態方法
            return $title . '-_-'.self::$titleTemp;// 調用靜態屬性
        }

        public function test() {
            self::parseTitle('haha');// 非靜態方法中調用靜態方法
        }
    }

    // echo Tools::$titleTemp;// 靜態屬性和方法不需要實例化就能調用

    echo Tools::parseTitle("VIP");

?>
<?php
    
    // 構造方法:對象被創建時自動調用的方法,一般做初始化工作時使用
    // 析構函數:對象在內存中被銷毀時自動調用,不能帶參數
    class Pager {
        public $page;// 當前頁
        public $totalPage;
        public $link;

        public function __construct($totalPage, $link, $page=1){
            $this->page = $page;
            $this->totalPage = $totalPage;
            $this->link = $link;
        }
    }

    $pager = new Pager(10, 'http://baidu.com', 2);
    print_r($pager);
?>
// 構造方法
<?php
    
    class BaseClass {
        public $user;
        public function error() {
            echo "404<br/>";
        }
        public function __construct() {
            echo "驗證<br/>";
        }
    }

    class SubClass extends BaseClass {
        public function __construct() {
            parent::__construct();// 執行父類的構造方法
            echo "驗證2";
        }
        public function test() {
            $this->user;
            $this->error();// 會調用本身的
        }
        public function error() {
            echo "error";
        }
    }

    $subClass = new SubClass();// 子類沒有構造函數會直接調用父類的

?>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,963評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,348評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,083評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,706評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,442評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,802評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,795評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,983評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,542評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,287評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,486評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,030評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,710評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,116評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,412評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,224評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,462評論 2 378

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,825評論 18 139
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,532評論 1 51
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,197評論 30 471
  • 晚訓永遠都是軍訓中最精彩的部分,我們唱歌跳舞來放松自己的心情,瞧,這是我們二營一連與對面的巴郎子隊在拉歌大家你一首...
    兵魂_562d閱讀 210評論 0 0
  • 今天的社會,有人叫到人心不古,其實這是個無法反駁的提法,因為現代中國的特性之一便是不存在復古,凡是想要復古的,都會...
    且行歌閱讀 181評論 0 0