超文本预处理器——PHP(基础)

来源:互联网 发布:淘宝衣服搭配在哪里 编辑:程序博客网 时间:2024/05/16 07:49

PHP,百度百科解释为一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

在学习之前了解一下PHP及其功能:
1、在服务器端运行,WEB网站的大部分数据都是存储在服务器端的,PHP就是用来处理这些存储在服务器端的数据的。
2、可以在多个平台运行,比如Linus、Windows、Unix…
3、它是一种脚本语言,通过编写脚本来指挥服务器工作。
4、不支持IE9版本以下的浏览器。

基本PHP语法

按照惯例,先打出一个Hello,World!

<?phpecho 'Hello,World!';?>

运行结果为:

这里写图片描述

可以看出PHP代码是写在<?php 此处是php代码?>标签之间的。
echo是PHP中的输出语句,可以把字符串输出(字符串用引号括起来)。

单行注释(//或#);多行注释(/**/)

在 PHP 中,所有用户定义的函数、类和关键词(例如 if、else、echo 等等)都对大小写不敏感。但是所有变量都对大小写敏感。

PHP变量

PHP变量规则

  • 变量以 $ 符号开头,其后是变量的名称
  • 变量名称必须以字母或下划线开头
  • 变量名称不能以数字开头
  • 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
  • 变量名称对大小写敏感($y$Y 是两个不同的变量)

PHP没有创建变量的命令,变量会在首次为其赋值时被创建;在创建PHP变量时不必声明其数据类型,PHP会根据它的值自动把变量转换为正确的数据类型;

PHP变量作用域
在PHP中,可以在脚本的任何位置对变量进行声明,变量的作用域指的是变量能够被访问的那部分脚本。PHP有三种不同的作用域:

  • local(局部)
  • global(全局)
  • static(静态)

Local和Global作用域
函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。
注释:可以在不同的函数中创建名称相同的局部变量,因为局部变量只能被在其中创建它的函数识别。

PHP global关键词
global关键词用于访问函数内的全局变量。

<?php$x=5;$y=10;function myTest() {  global $x,$y;  $y=$x+$y;}myTest();echo $y; // 输出 15?>

运行结果为15,正确!

PHP static 关键词

通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要更进一步的工作。要完成这一点,请在您首次声明变量时使用 static 关键词:

<?phpfunction myTest() {  static $x=0;  echo $x;  $x++;}myTest();myTest();myTest();?>

运行结果:
这里写图片描述

PHP 数据类型

PHP字符串:
字符串是字符序列,比如 “Hello world!”。字符串可以是引号内的任何文本。您可以使用单引号或双引号。

PHP 整型:
- 整数必须有至少一个数字(0-9)
- 整数不能有小数点
- 整数正负均可
- 可以用三种格式规定整数:十进制、十六进制(前缀是 0x)或八进制(前缀是 0)

PHP NULL值
特殊的 NULL 值表示变量无值。NULL 是数据类型 NULL 唯一可能的值。
NULL 值标示变量是否为空。也用于区分空字符串与空值数据库。

PHP 浮点数、数组、对象(略)

PHP 常量

常量是单个值的标识符(名称)。在脚本中无法改变该值。有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。
注释:与变量不同,常量贯穿整个脚本是自动全局的。

如需设置常量,请使用 define() 函数 - 它使用三个参数:
1. 首个参数定义常量的名称
2. 第二个参数定义常量的值
3. 可选的第三个参数规定常量名是否对大小写敏感。默认是 false。

PHP 运算符

PHP 字符串运算符
. (串接) $txt1 = "Hello" $txt2 = $txt1 . " world!" 结果为$txt2=”Hello World”
.=(串接赋值) $txt1 = "Hello" $txt1 .= " world!" 结果为 $txt1 = “Hello world!”


PHP数组

首先数组分为一维数组和多维数组,而多维数组中只有二维和三维数组是经常用到的(因为当维数超过三维便难以理解),二位数组是数组的数组(三维数组是数组的数组的数组)。

一维数组的定义:arr=array();arr = array(array(…);array(…);array(…););

索引数组

索引数组赋值有三种方式:

1array[0]='苹果'2$arr=array('0'=>'苹果');3$arr=array('苹果');

索引数组的访问:$srr = $arr['0'];(因为输出的是索引数组所以$arr[0]也可以将第一个数据取出来,但是如果输出关联数组,若不给建加引号就无法输出,所以为了不必要的麻烦,给所有的键值加引号);

foreach循环

foreach循环只适用于数组,并用于遍历数组中的每个键/值对。
每进行一次循环迭代,当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。

下面的例子演示的循环将输出给定数组($colors)的值:

<?php $colors = array("red","green","blue","yellow"); foreach ($colors as $value) {  echo "$value <br>";}?>

注:$colors为数组,可用count()函数获得数组的长度。
运行结果为:
这里写图片描述

关联数组(索引和关联两个词都是针对数组的键而言的,索引的键是整数,而关联数组的键是字符串):

初始化

<?php$age=array("Bill"=>"35", //"Bill"为键,“35”为值"Steve"=>"37","Peter"=>"43");echo "Peter is " . $age['Peter'] . " years old.";?>

运行结果:
这里写图片描述

数组排序

  • sort() - 以升序对数组排序
  • rsort() - 以降序对数组排序
  • asort() - 根据值,以升序对关联数组进行排序
  • ksort() - 根据键,以升序对关联数组进行排序
  • arsort() - 根据值,以降序对关联数组进行排序
  • krsort() - 根据键,以降序对关联数组进行排序

PHP函数

自定义函数

简单实例(与js类似):

<?phpfunction say() //函数定义{    echo 'hello world';}say();//函数调用?>

使用return的关键字可以使函数返回值。省略return则返回值为NULL,返回语句会立即中止函数的运行,函数不能返回多个值,但可以通过一个数组来得到类似的效果。

可变函数

所谓可变函数, 即通过变量的值来调用函数,因为变量的值是可变的,所以通过改变一个变量的值来实现调用不同的函数。经常会用在回调函数、函数列表、或者根据动态参数来调用不同的函数。可变函数的调用方法为变量名加括号。

function name(){    echo 'jobs';}$func = 'name';$func(); //调用可变函数

可变函数也可以用在对象的方法调用上。

class book{    function getname(){    return 'bookname';}}$func = 'getname';$book = new book();$book ->$func();

内置函数

内置函数指的是PHP默认支持的函数,PHP内置了很多标准的常用的处理函数,包括字符串处理、数组函数、文件处理、session与cookies处理等等。
PHP 的真正力量来自它的函数:它拥有超过 1000 个内置的函数。
通过内置函数str_replace可以实现字符串的替换。下面的例子将“jobs”替换成“steven jobs”:

<?php$str = 'i am jobs.';$str = str_replace('jobs', 'steven jobs', $str);echo $str; //结果为“i am steven jobs”?>

另外一些函数是通过其他拓展来支持的,比如mysql数据库处理函数,GD图像处理函数,邮件处理函数等,PHP默认加载了一些常用的拓展库,我们可以安装或者加载其他拓展库来增加PHP的处理函数。

注:用function_exists判断函数是否存在,同样的method_exists可以用来检测类的方法是否存在。


PHP 类和对象

PHP是面向对象的(即拥有面向对象的一些特性)。

构造函数

PHP5可以在类中使用__construct()定义一个构造函数,具有构造函数的类,会在每次对象创建的时候调用该函数,因此常用来在对象创建的时候进行一些初始化工作。

class Car{    function _construct{     ptint"构造函数被调用\n";}}$car = new Car();//实例化的时候回自动调用构造函数_construc,这里会输出一个字符串

注:与c++不同的是,在子类中如果定义了_construc则不会调用父类的_construc,如果需要同时调用父类的构造函数,需要使用parent:_construc()显式的调用。

同样,PHP5支持析构函数,使用_destruct()进行定义,析构函数指的是当某个对象的所有引用被删除,或者对象被显式的销毁时会执行的函数。

静态关键字static
使用static修饰的方法称为静态方法,这一点与c++相同,静态方法属于类,而不属于对象,所以调用时使用(类名::方法名)来调用。不允许对象使用->操作符调用。

静态方法中,$this伪变量不允许使用。可以使用self,parent,static在内部调用方法与属性。

class Car {    private static $speed = 10;    public static function getSpeed() {        return self::$speed;    }    public static function speedUp() {        return self::$speed+=10;    }}class BigCar extends Car {    public static function start() {        parent::speedUp();    }}BigCar::start();echo BigCar::getSpeed();

重载
PHP中的重载是指冬天的创建属性与方法,是通过魔术方法来实现的。属性的重载通过_set,_get,_isset,_unset来分别实现对不存在的属性值、读取、判断属性是否设置、销毁属性。

class Car{    private $ary = array();    public function _set($key,$val){        $this->ary[$key] = $val;    }    public function _get($key){        public function _get($key){            if(isset($this->ary[$key])){                return $this->ary[$key];        }        return null;                }    public function _isset($key){        if(isset($this->ary[$key])){return true;}            return false;    }            public fucntion _unset($key){                unset($this->ary[$key]);            }}$car = new Car();$car->name = '汽车';//name属性动态创建并赋值echo $car->name;

注:PHP允许我们在双引号串中直接包含字符串变量,而单引号字符串变量中的内容总被认为是普通字符。
方法的重载通过_call来实现,当调用不存在的方法的时候,将会转为参数调用_call方法,当调用调用不存在的静态方法时会使用_callStatic重载。

class Car {    public $speed = 0;    public function __call($name, $args) {        if ($name == 'speedUp') {            $this->speed += 10;        }    }}$car = new Car();$car->speedUp(); //调用不存在的方法会使用重载echo $car->speed;

PHP 全局变量

PHP 全局变量 - 超全局变量

PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。
这些超全局变量是:

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

$GLOBALS
这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。
下面的例子展示了如何使用超级全局变量 $GLOBALS:

<?php $x = 75; $y = 25;function addition() {   $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; }addition(); echo $z; ?>

运行结果:
这里写图片描述

PHP $_SERVER
$_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息。
下面的例子展示了如何使用 $_SERVER 中的某些元素:

<?php echo $_SERVER['PHP_SELF'];echo "<br>";echo $_SERVER['SERVER_NAME'];echo "<br>";echo $_SERVER['HTTP_HOST'];echo "<br>";echo $_SERVER['HTTP_REFERER'];echo "<br>";echo $_SERVER['HTTP_USER_AGENT'];echo "<br>";echo $_SERVER['SCRIPT_NAME'];?>

运行结果:
这里写图片描述

PHP $_REQUEST

PHP $_REQUEST 用于收集 HTML 表单提交的数据。
下面的例子展示了一个包含输入字段及提交按钮的表单。当用户通过点击提交按钮来提交表单数据时, 表单数据将发送到 标签的 action 属性中指定的脚本文件。在这个例子中,我们指定文件本身来处理表单数据。如果您需要使用其他的 PHP 文件来处理表单数据,请修改为您选择的文件名即可。然后,我们可以使用超级全局变量 $_REQUEST 来收集 input 字段的值:

<html><body><form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">Name: <input type="text" name="fname"><input type="submit"></form><?php $name = $_REQUEST['fname']; echo $name; ?></body></html>

运行结果:
这里写图片描述

点击提交结果:
这里写图片描述

0 0
原创粉丝点击