您现在的位置是:首页 >技术教程 >开始学习PHP之开篇入门版网站首页技术教程

开始学习PHP之开篇入门版

阿晨学前端 2024-06-28 06:01:02
简介开始学习PHP之开篇入门版

php在线编辑工具:菜鸟教程在线编辑器 (runoob.com)

php集成环境:phpStudy V8.1下载(Win64位) - 官方最新版本(不断更新)-php中文网工具下载

基本的 PHP 语法

  • PHP 文件的默认文件扩展名是 ".php"。
  • PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码
<!DOCTYPE html> 
<html> 
<body> 

<h1>My first PHP page</h1> 

<?php 
echo "Hello World!"; 
?> 

</body> 
</html>

PHP有两种在浏览器输出文本的基础指令:echo 和 print

  • echo - 可以输出一个或多个字符串;echo 没有返回值
  • print - 只允许输出一个字符串;print有返回值1
<!DOCTYPE html> 
<html> 
<body> 

<?php 
echo "这是一个", "字符串,", "使用了", "多个", "参数。"
print "你好"
?> 

</body> 
</html>

PHP 变量以 $ 符号开始

PS:PHP 是一门弱类型语言,不必向 PHP 声明该变量的数据类型。PHP 会根据变量的值,自动把变量转换为正确的数据类型。而在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称 

<!DOCTYPE html> 
<html> 
<body> 

<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>

</body> 
</html>

php局部和全局作用域

  • 定义在函数外部的就是全局变量,它的作用域从定义处一直到文件结尾。
  • 函数内定义的变量就是局部变量,它的作用域为函数定义范围内。
  • 函数之间存在作用域互不影响。
  • 函数内访问全局变量需要 global 关键字或者使用 $GLOBALS[index] 数组
<?php
$x=5;
$y=10;
 
function myTest()
{
    global $x,$y;
    $y=$x+$y;
}
 
myTest();
echo $y; // 输出 15
?>

 PHP 数据类型

  • String(字符串)
<?php 
$x = "Hello world!";
echo $x;
echo "<br>"; 
$x = 'Hello world!';
echo $x;
?>
  • Integer(整型):整数是一个没有小数的数字

var_dump() 函数返回变量的数据类型和值

print_r 如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素

<?php 
$x = 5985;
var_dump($x);
echo "<br>"; 
$x = -345; // 负数 
var_dump($x);
echo "<br>"; 
$x = 0x8C; // 十六进制数
var_dump($x);
echo "<br>";
$x = 047; // 八进制数
var_dump($x);
?>
  • Float(浮点型):浮点数是带小数部分的数字
<?php 
$x = 10.365;
var_dump($x);
echo "<br>"; 
$x = 2.4e3;
var_dump($x);
echo "<br>"; 
$x = 8E-5;
var_dump($x);
?>
  • Boolean(布尔型)
$x=true;
$y=false;
  • Array(数组)
<?php 
$cars=array("Volvo","BMW","Toyota");
var_dump($cars);
?
  • Object(对象)
<?php
class Car
{
  var $color;
  function __construct($color="green") {
    $this->color = $color;
  }
  function what_color() {
    return $this->color;
  }
}
?>
  • NULL(空值)
<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>
  • Resource(资源类型)

PHP 类型比较

  • 松散比较:使用两个等号 == 比较,只比较值,不比较类型。
  • 严格比较:用三个等号 === 比较,除了比较值,也比较类型。

PHP 常量:常量在定义后,默认是全局变量

设置常量,使用 define() 函数:

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

//name:必选参数,常量名称,即标志符。
//value:必选参数,常量的值。
//case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感,默认是大小写敏感的。
<?php
// 区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com");
echo GREETING;    // 输出 "欢迎访问 Runoob.com"
echo '<br>';
echo greeting;   // 输出 "greeting",但是有警告信息,表示该常量未定义
?>

字符串变量

  • 并置运算符:并置运算符 (.) 用于把两个字符串值连接起来
<?php
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . " " . $txt2;
?>
  • strlen() 函数:strlen() 函数返回字符串的长度(字节数)

<?php
echo strlen("Hello world!");
?>
  • strpos() 函数:用于在字符串内查找一个字符或一段指定的文本;如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
<?php
echo strpos("Hello world!","world");
?>

PHP If...Else 语句

<?php
$t=date("H");
if ($t<"20")
{
    echo "Have a good day!";
}
else
{
    echo "Have a good night!";
}
?>

PHP Switch 语句

break 来阻止代码跳入下一个 case 中继续执行。default 语句用于不存在匹配(即没有 case 为真)时执行。

<?php
$favcolor="red";
switch ($favcolor)
{
case "red":
    echo "你喜欢的颜色是红色!";
    break;
case "blue":
    echo "你喜欢的颜色是蓝色!";
    break;
case "green":
    echo "你喜欢的颜色是绿色!";
    break;
default:
    echo "你喜欢的颜色不是 红, 蓝, 或绿色!";
}
?>

PHP 数组

声明数组:

<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

遍历数组: 

<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
 
for($x=0;$x<$arrlength;$x++)
{
    echo $cars[$x];
    echo "<br>";
}
?>

数组排序:

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

PHP 超级全局变量

$GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问有。$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

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

循环 - While 循环

  • while - 只要指定的条件成立,则循环执行代码块
<?php
$i=1;
while($i<=5)
{
    echo "The number is " . $i . "<br>";
    $i++;
}
?>
  • do...while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
<?php
$i=1;
do
{
    $i++;
    echo "The number is " . $i . "<br>";
}
while ($i<=5);
?>
  • for - 循环执行代码块指定的次数
<?php
for ($i=1; $i<=5; $i++)
{
    echo "数字为 " . $i . PHP_EOL;
}
?>
  • foreach - 根据数组中每个元素来循环代码块
<?php
$x=array("Google","Runoob","Taobao");
foreach ($x as $value)
{
    echo $value . PHP_EOL;
}
?>

PHP 函数

<?php
function writeName($fname)
{
    echo $fname . " Refsnes.<br>";
}
 
echo "My name is ";
writeName("Kai Jim");
echo "My sister's name is ";
writeName("Hege");
echo "My brother's name is ";
writeName("Stale");
?>
// php 实现动态规划的菲波那契:
<?php
function fibonaci($a)
{
    $x=0;
    $y=1;
    $ret=0;
    $count=0;
    while($count<$a)
    {
        $ret=$x+$y;
        $x=$y;
        $y=$ret;
        $count++;
    }
    return $ret;
}
echo fibonaci(4);
?>

PHP 魔术常量

  • __LINE__:文件中的当前行号
  • __FILE__:文件的完整路径和文件名
  • __DIR__:文件所在的目录
  • ......

 命名空间

目的是解决重名问题,PHP中不允许两个函数或者类出现相同的名字

<?php
namespace MyProject {
    const CONNECT_OK = 1;
    class Connection { /* ... */ }
    function connect() { /* ... */  }
}

namespace AnotherProject {
    const CONNECT_OK = 1;
    class Connection { /* ... */ }
    function connect() { /* ... */  }
}
?>

PHP 面向对象

PHP_EOL 是一个常量,表示操作系统特定的换行符

<?php 
//类使用 class 关键字后加上类名定义
class Site { 
  /* 成员变量 */ 
  var $url; 
  var $title; 
   
  /* 成员函数 */ 
  function setUrl($par){ 
     $this->url = $par; 
  } 
   
  function getUrl(){ 
     echo $this->url . PHP_EOL; 
  } 
} 

$php = new Site; 

// 调用成员函数,设置URL 
$php->setUrl( 'www.php.cn' ); 

// 调用成员函数,获取URL 
$php->getUrl(); 
?>
  • 构造函数:
<?php
class Site {
  /* 成员变量 */
  var $url;
  var $title;

  function __construct( $par1, $par2 ) {
    $this->url = $par1;
    $this->title = $par2;
  }
  /* 成员函数 */
  function setUrl($par){
     $this->url = $par;
  }
  
  function getUrl(){
     echo $this->url . PHP_EOL;
  }
}

$php = new Site('www.php.cn', 'php中文网'); 

// 调用成员函数,获取URL 
$php->getUrl(); 

?>
  •  析构函数

当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。

  • 继承:extends
  • 重写:父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写
  • 访问控制:PHP 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的

public(公有):公有的类成员可以在任何地方被访问。

protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问。

private(私有):私有的类成员则只能被其定义所在的类访问。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。