精进不休 php - 数据类型变量常量函数类接口特性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了精进不休 php - 数据类型变量常量函数类接口特性相关的知识,希望对你有一定的参考价值。
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、数据库操作、错误异常...
欢迎关注公众号:云舒的自媒体~~~
以上是关于精进不休 php - 数据类型变量常量函数类接口特性的主要内容,如果未能解决你的问题,请参考以下文章
《Go语言精进之路》读书笔记 | 在init函数中检查包级变量的初始状态