1. 程式人生 > >精進不休(1) php - 數據類型、變量、常量、函數、類、接口、特性

精進不休(1) php - 數據類型、變量、常量、函數、類、接口、特性

replace rac cti nsh 靜態變量 efi href 數據庫操作 lba

1.數據類型
php有八種基本的數據類型,包含了:
四種標量類型:boolean(布爾型)、integer(整型)、float(浮點型)、string(字符串)
兩種復合類型:array(數組)、object(對象)
兩種特殊類型:resource(資源)、NULL
要想知道某個變量是屬於某個類型,可以使用gettype()函數,例如:

<?php
$a = 100;
echo gettype($a);  //integer

2.變量
php中定義變量以$開頭,變量名首字母必須為字母(a-z A-Z),下劃線(_),不能使用php的預定義關鍵字(if、else、switch、array、function、class、interface等),例如:

<?php
$a = 10;

變量包含了以下幾種變量:
普通變量,例:$a = 10;
靜態變量:使用static關鍵字標識的變量,必須定義在函數內部。函數執行完之後,變量值不會丟失,可用於遞歸調用
超全局變量:包含了$_GET、$_POST、$_REQUEST、$_FILES等等,詳細介紹見PHP官網:http://www.php.net/manual/zh/language.variables.superglobals.php

3.常量
使用define()函數定義一個常量,註意常量的值只能定義為標量,例如:

<?php
define(‘API_VERSION‘, 3.1.2);   //定義API_VERSION常量

4.函數

  • 普通函數,例如:
<?php
//定義一個函數,函數名為test,有兩個參數$a,$b
function test($a, $b)
{
    return $a + $b;
}
  • 匿名函數:其實就是沒有名稱的函數,函數可以賦值給變量。例如:
<?php
$func = function ($name) {
    return sprintf(‘hello %s‘, $name);
};

//使用一個變量作為函數名,然後向函數傳入參數
echo $func(‘yunshu‘);  //hello yunshu
  • 回調函數
    很多PHP函數都會用到回調函數,例如array_map()和preg_replace_callback()等。例如:
<?php
function incrementNumber($number) {
    return $number+1;
}

//這裏的第一個參數要求是一個回調函數,第二個參數是個數組。函數實現了
//對數組的每個元素加一的操作
$res = array_map(‘incrementNumber‘, [1,2,3]);//第一個參數也可以是一個匿名函數,例:function ($number) {return $num+1}
var_dump($res); //結果數組元素變為2,3,4

5.類、接口
使用類、接口能讓代碼更加有模塊化。
下面是一個使用類、抽象類、接口的例子:

<?php

//使用接口定義一類方法。接口中不能定義成員變量(包含類靜態變量)
interface IShop 
{ 
    public function buy($gid); 
    public function sell($gid); 
    public function view($gid); 
} 

//抽象類使用abstract標識,抽象出shop的共同的方法,子類可以對方法進行重寫。
//要實現某接口,使用implements關鍵字。
abstract class BaseShop implements IShop 
{ 
    public function buy($gid) 
    { 
        echo(‘你購買了ID為 :‘.$gid.‘的商品‘); 
    } 

    public function sell($gid) 
    { 
        echo(‘你賣了ID為 :‘.$gid.‘的商品‘); 
    } 

    public function view($gid) 
    { 
        echo(‘你查看了ID為 :‘.$gid.‘的商品‘); 
    } 
} 

//繼承父類,使用extends關鍵字
class BallShop extends BaseShop 
{ 
    protected $itme_id = null; 

    public function __construct() 
    { 
        $this->itme_id = 2314; 
    } 

    public function open() 
    { 
        $this->sell($this->itme_id); 
    } 
}

6.性狀
性狀(trait),是PHP5.4.0引入的概念。性狀像類又像接口,把模塊化的實現方式註入到多個無關的類中,促進了代碼的重用。

<?php
trait Hello 
{
    public function sayHello() 
    {
        echo ‘Hello ‘;
    }
}

trait World 
{
    public function sayWorld() 
    {
        echo ‘World‘;
    }
}

class MyHelloWorld 
{
    //使用trait:將trait的屬性和方法導入進來,就想類本身就有這個屬性和方法一樣。
    use Hello, World;

    public function sayExclamationMark() 
    {
        echo ‘!‘;
    }
}

$obj = new MyHelloWorld();
$obj->sayHello();
$obj->sayWorld();
$obj->sayExclamationMark();   //hello world!

今天就說到這裏,明天說命名空間、自動加載、composer、數據庫操作、錯誤異常...

歡迎關註公眾號:雲舒的自媒體~~~

精進不休(1) php - 數據類型、變量、常量、函數、類、接口、特性