精進不休(1) php - 數據類型、變量、常量、函數、類、接口、特性
阿新 • • 發佈:2017-11-15
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 - 數據類型、變量、常量、函數、類、接口、特性