PHP 基础知识

在本文中,我们介绍了PHP的基础知识。

PHP

PHP是一种专为网络开发而设计的脚本语言。它用于生成动态网页。目前,PHP是使用最广泛的编程语言之一。它的大部分语法是从C、Java和Perl借用的,具有一些独特的PHP特定功能。

PHP可以嵌入到HTML代码中,它通常在Web服务器上运行。Web服务器需要配置为处理PHP代码并从中创建网页内容。它可以部署在大多数网络服务器和操作系统上。PHP是一个免费软件。PHP于1995年首次创建,并从那时起得到积极发展。

安装PHP

为了在我们的计算机上进行开发,可以通过安装包或通过开发包(如WAMP、MAMP或XAMPP)安装PHP。

学习PHP基础知识的一个好方法是使用PHPCLI。PHPCLI是PHP脚本语言的命令行解释器。

$ sudo apt install php-cli

在DebianLinux系统上,我们可以通过系统包管理器安装PHPCLI。

$ php -v
PHP 8.1.2 (cli) (built: Jun 13 2022 13:52:54) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies

我们使用php-v命令获取PHP的版本。

PHP命令行

PHPCLI是PHP语言的命令行解释器。它对于从shell测试PHP脚本很有用。在本文中,我们使用PHP命令行解释器。我们专注于PHP语言的核心。

<?php

echo "this is PHP language\n";

这里我们有一个简单的PHP脚本。

$ php simple.php
this is PHP language

PHP交互外壳

与Python或Ruby一样,PHP也有一个交互式shell。测试小型语言结构很有用。

$ php -a
Interactive mode enabled

php> print PHP_OS;
Linux
php> print PHP_VERSION;
8.1.2

PHPshell是通过php命令的-a选项调用的。外壳使用php>提示符。

PHP注释

注释被人类用来阐明源代码。PHP中的所有注释都在#字符之后。

<?php

# comments.php
# Author Jan Bodnar
# ZetCode 2022

echo "This is comments.php script\n";

#字符后的所有内容都会被PHP解释器忽略。

// comments.php
// author Jan Bodnar
// ZetCode 2022

/*
 comments.php
 author Jan Bodnar
 ZetCode 2022
*/

PHP也能识别C语言的注释。

PHP空白

PHP中的空格用于分隔PHP源文件中的标记。用于提高源代码的可读性。

public $isRunning;

有些地方需要空格;例如在访问说明符和变量名之间。在其他地方,这是禁止的。它不能存在不变的标识符。

$a=1;
$b = 2;
$c  =  3;

令牌之间的空间大小与PHP解释器无关。它基于程序员的偏好和风格。

$a = 1;
$b = 2; $c = 3;
$d
  =
   4;

我们可以将两个语句放在一行中。或者将一个语句分成三行。但是,源代码应该是人类可读的。对于如何布置源代码,存在公认的标准。

PHP分号

分号用于标记PHP语句的结束。这是强制性的。

$a = 34;
$b = $a * 34 - 34;
echo $a;

这里我们有三个不同的PHP语句。第一个是任务。它将一个值放入$a变量中。第二个是表达式。计算表达式并将输出提供给$b变量。第三个是命令。它打印$a变量。

PHP变量

变量是一个标识符,它包含一个值。在编程中,我们说我们给变量赋值。从技术上讲,变量是对存储值的计算机内存的引用。在PHP语言中,变量可以保存字符串、数字或各种对象,如函数或类。可以随时间为变量分配不同的值。

PHP中的变量由$字符(称为印记)和标签组成。标签可以由字母数字字符和下划线_字符创建。变量不能以数字开头。PHP解释器可以更轻松地区分数字和变量。

$Value
$value2
$company_name

这些是有效的PHP标识符。

$12Val
$exx$
$first-name

这些是无效PHP标识符的示例。

变量区分大小写。这意味着$Price$price$PRICE是三个不同的标识符。

<?php

$number = 10;
$Number = 11;
$NUMBER = 12;

echo $number, $Number, $NUMBER;

echo "\n";

在我们的脚本中,我们将三个数值分配给三个变量并打印它们。但是,为了清楚起见,不建议创建仅大小写不同的变量;这被认为是一种不良做法。

$ php case.php
101112

PHP常量

常量是在脚本执行期间不能改变的值的标识符。按照惯例,常量标识符始终为大写。

<?php

define("SIZE", 300);
define("EDGE", 100);

#SIZE = 100;

echo SIZE;
echo EDGE;

echo "\n";

在脚本中,我们定义了两个常量。

define("SIZE", 300);
define("EDGE", 100);

常量是用define函数创建的。

# SIZE = 100;

常量不同于变量;我们不能为现有常量分配不同的值。如果我们取消注释该行,脚本将失败。

echo SIZE;
echo EDGE;

常量不使用美元符号字符。

$ php constants.php
300100

以下是PHP编译时常量的列表。

__CLASS__    __DIR__       __FILE__    __FUNCTION__
__METHOD__   __NAMESPACE__

PHP字面量

literal是在PHP源代码中表示值的任何符号。从技术上讲,文字在编译时赋值,而变量在运行时赋值。

$age = 29;
$nationality = "Hungarian";

这里我们将两个文字分配给变量。数字29和字符串”Hungarian”是文字。

<?php

$name1 = "Jane ";
$age1 = 17;

$name2 = "Rose ";
$age2 = 16;

echo "Patrick 34\n";
echo "Luke 22\n";

echo $name1, $age1, "\n";
echo $name2, $age2, "\n";

如果我们不为变量分配文字,我们就无法使用它——它会被丢弃。

$ php literals.php
Patrick 34
Luke 22
Jane 17
Rose 16

PHP运算符

运算符是用于对某个值执行操作的符号。

+    -    *    /    %  **  ++   --  ?:  ??
=    +=   -=   *=   /=   .=    %=
==   !=  ===  !==  <>  >  <  >=  <=  <=>
&&   ||   !   xor   or
&    ^    |   ~   .   <<   >>

这些是PHP运算符。我们将在本教程后面讨论运算符。

PHP分隔符

delimiter是一个或多个字符的序列,用于指定纯文本或其他数据流中单独、独立区域之间的边界。

$a = "PHP";
$b = 'Java';

单字符和双字符用于标记字符串的开始和结束。

function setDate($date) {

    $this->date = $data;
}

if ($a > $b) {

    echo "\$a is bigger than \$b";
}

括号用于标记函数签名。签名是函数参数。大括号用于标记函数体的开始和结束。它们也用于流量控制。

$a = array(1, 2, 3);
echo $a[1];

方括号用于标记数组索引。

/*
 Author Jan Bodnar
 January 2022
 ZetCode
*/

/**/分隔符用于在PHP中提供C风格的注释。

<?php
// PHP code

<?php分隔符用于声明PHP代码的开始。

PHP关键字

关键字是PHP编程语言中的保留字。关键字用于在计算机程序中执行特定任务;例如,打印一个值、重复任务或执行逻辑操作。程序员不能将关键字用作普通变量。

以下是PHP关键字列表。

abstract    and          array       as          break
case        catch        class       clone       const
continue    declare      default     do          else
elseif      enddeclare   endfor      endforeach  endif
endswitch   endwhile     extends     final       for
foreach     function     global      goto        if
implements  interface    instanceof  namespace   new
or          private      protected   public      static
switch      throw        try         use         var
while       xor          yield       yield from

PHP控制台输出

我们的PHP脚本的输出被发送到控制台。请注意,我们说控制台是因为我们在这里使用PHP_CLI命令行解释器。如果我们在网络上测试这些示例,输出将发送到浏览器。

<?php 

$a = 23;
print $a;

此PHP脚本为变量赋值。它将它打印到控制台。

$a = 23;

我们将值23赋给$a变量。每个变量都以美元字符开头。此PHP代码行是一条语句。每个语句都以分号结尾。在PHP中,分号不像在JavaScript或Ruby中那样是可选的。他们是强制性的。

print $a;

我们将$a变量打印到控制台。print关键字不会在输出中添加新行。如果我们想要一个新行,我们必须手动放置它。print关键字只有一个参数。

<?php 

$a = 23;
$b = 24;

echo $a, "\n", $b, "\n";

在此脚本中,我们使用了echo关键字。它类似于print关键字。与print关键字不同,它可以接受多个参数。

$a = 23;
$b = 24;

我们定义了两个变量。

echo $a, "\n", $b, "\n";

我们将变量打印到控制台。我们还包括换行符。参数可以用逗号分隔。

$ php echoing.php 
23
24

PHP命令行参数

PHP脚本可以接收命令行参数。他们遵循程序的名称。$argv是一个包含PHP脚本所有参数的数组。$argc包含传递的参数数量,包括PHP脚本的名称。

<?php 

echo "There are $argc arguments\n";

for ($i=0; $i < $argc; $i++) {
    echo $argv[$i] . "\n";
}

此脚本使用命令行参数。

echo "There are $argc arguments\n";

我们打印传递给脚本的参数数量。

for ($i=0; $i < $argc; $i++) {
    echo $argv[$i] . "\n";
}

在for循环中,我们遍历并打印所有参数。循环将在本教程后面介绍。

$ php arguments.php 1 2 3
There are 4 arguments
arguments.php
1
2
3

我们将三个参数传递给脚本。脚本的名称也是PHP脚本的参数。

PHP类型

PHP是一种弱类型语言。它适用于类型,但程序员在声明变量时不指定它们。数据类型是多种数据类型中的一种,如双精度、整数或布尔值。特定数据类型的值来自特定的值范围,说明该类型的可能值,操作这可以在该类型上完成,以及该类型的值的存储方式。PHP隐含地处理数据类型。程序员不明确指定数据类型。

<?php 

$a = "Jane";
echo "$a \n";

$a = 12;
echo "$a \n";

$a = 56.4;
echo "$a \n";

$a = true;
echo "$a \n";

在这个PHP脚本中,我们有一个$a变量。首先,我们给它分配一个字符串,然后是一个整数、一个双精度值,最后是一个布尔值。如果我们将一个字符串分配给一个变量,PHP会自动创建一个字符串变量。

$ php dynamic.php 
Jane 
12 
56.4 
1 
<?php 

$temperature = 12.4;
$name = "Jane";
$age = 17;
$values = array(1, 2, 3, 4, 5, 6); 

class Being {};

$somebody = new Being();

echo gettype($temperature), "\n";
echo gettype($name), "\n";
echo gettype($age), "\n";
echo gettype($values), "\n";
echo gettype($somebody), "\n";

在上面的PHP脚本中,我们动态创建了五种类型。

$temperature = 12.4;

定义了一个double变量。

$name = "Jane";

定义了一个字符串变量。

$age = 17;

定义了一个整数变量。

$values = array(1, 2, 3, 4, 5, 6); 

class Being {};

这是一个数组和一个类。稍后将更详细地介绍这两种类型。

echo gettype($temperature), "\n";

gettype函数返回相关变量的类型。

$ php gettype.php 
double
string
integer
array
object

PHP类型声明

类型声明可以添加到函数参数、返回值和类属性中。它们通过declare(strict_types=1);指令强制执行。

<?php

declare(strict_types=1);

function power(int $a, int $b=2): int {

    if ($b == 2) {
    
        return $a * $a;
    }

    $value = 1;

    for ($i = 0; $i < $b; $i++) {
    
        $value *= $a;
    }
    
    return $value;
}

$v1 = power(5);
$v2 = power(5, 4);

echo "5^2 is $v1 \n";
echo "5^4 is $v2 \n";

在示例中,我们对函数参数和函数返回值使用类型声明。

PHP常量

在PHP中,我们可以创建常量。常量是值的名称,与变量不同,它不能与不同的值重新关联。我们使用define函数在PHP中创建常量。

<?php 

define("BLUE", "0000FF");

echo BLUE, "\n";

echo defined("BLUE");
echo "\n";

在这个PHP脚本中,我们定义了一个BLUE常量。

define("BLUE", "0000FF");

这里我们定义了BLUE常量。用大写字母书写常量是一种惯例。

echo BLUE, "\n";

这里我们使用它。请注意,常量前面没有$美元字符。

echo defined("BLUE");

我们使用了另一个函数,defined函数。它检查特定常量是否存在。如果是,则返回true。

$ php constant.php 
0000FF
1

PHP也有一些预定义的常量。

<?php 

echo TRUE;
echo "\n";
echo PHP_VERSION;
echo "\n";
echo PHP_OS;
echo "\n";
echo __LINE__;
echo "\n";
echo __FILE__;
echo "\n";
echo DIRECTORY_SEPARATOR;
echo "\n";
echo PHP_DATADIR;
echo "\n";

这里我们打印一些内置的PHP常量。例如,PHP_OS常量打印构建PHP的操作系统版本。

$ php predefined_constants.php 
1
8.1.2
Linux
9
/home/jano/Documents/prog/php/simple.php
/
/usr/share/php/8.1

PHP变量插值

变量插值正在用字符串文字中的值替换变量。变量插值的另一个名称是:变量替换或变量扩展。

<?php 

$age = 17;

echo "Jane is $age years old\n";

$age变量被双引号括起来的字符串中的值17替换。

$ php interpolation.php 
Jane is 17 years old
<?php 

$age = 17;

echo 'Jane is $age years old\n';

但是,如果我们使用单引号,这将不起作用。在这种情况下,没有插值发生,也没有特殊字符起作用。

$ php nointerpolation.php 
Jane is $age years old\n

我们看到了字符串的逐字输出。

PHP包括文件

对于更大的程序,PHP代码被拆分成多个文件。我们使用include语句来加入各种PHP文件。

<?php 

define("VERSION", 1.12);

function get_max($x, $y) {

    if ($x > $y) {

        return $x;
    } else {

        return $y;
    }
}

比方说,我们有一个common.php文件,我们在其中定义了一些常量和函数。

<?php 

include "common.php";

echo "The version is " . VERSION . "\n";

$a = 5;
$b = 3;

echo get_max($a, $b), "\n";

我们还有另一个文件想要使用上述定义。

include "common.php";

我们只需使用include关键字将定义包含到我们的文件中。我们必须指定common.php文件的确切路径。在我们的简单例子中,两个文件都在同一个目录中。

$ php myfile.php 
The version is 1.12
5

在本文中,我们介绍了PHP语言。

列出所有PHP教程。

赞(0) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏