一、while 循环
语法:
while (条件) //没有“;”
{
要执行的代码;
}
<?php
$i=1;
while($i<=5)
{
echo "The number is " . $i . "<br>";
$i++; //循环每运行一次,i就会加1(不能遗漏)
}
?>
The number is 1
The number is 2
The number is 3
The number is 4
The number is 5
二、do...while 循环语句
会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环
do { 要执行的代码; } while (条件);
三、函数
1.创建函数
// function 变量名() 无参数表示()为空,无返回也就没有return;包含参数(可有多个参数)可有return也可无,但echo输出语句位置会发生改变
//创建函数,不要跟系统的内置函数重名
//要执行函数需要调用函数
<?php
function functionName()
{
// 要执行的代码
}
?>
例:
<?php
//无参数表示()里面是空的,无返回就是函数的程序里没有 return
function functionwrite(){
echo '123456';
}
functionName(); // 调用函数
?>
<?php
function writename($r){
$c = 2 * $radius * pi();
echo '半径为'.$r.'的周长为:'.$c; //包含参数无返回值,echo 语句写在函数里面
}
writename(10); //调用函数
function functionname($radius) {
$c = 2 * $radius * pi ();
return $c;
}
echo '半径为20的周长为:'.functionname(20); //包含参数,有返回值,echo 语句写在外面。//functionname(20) 整体就得到一个值
?>
默认参数:指定某个变量作为可选参数,放在参数列表末尾并指定默认值,如:
<?php
function values($a,$b=0){ //$b=0是默认参数,调用函数时未规定$b的值时,选择默认为0
$a=$a+($a*$b);
echo "$a<br>";
}
values(100,0.5); >>150
values(100); >>100
?>
四、魔术常量
预定义常量:预定义常量就是PHP内置的常量,预先定义好的,也称“魔术常量”
8个魔术常量
//__FILE__是两条下划线,不是一条
1.__LINE__ (line)
文件中的当前行号。
2.__FILE__ (file)
返回文件路径(绝对路径)
3.__DIR__ (dir)
返回文件所在的目录
4.__FUNCTION__ (function)
返回函数名称,区分大小写,不在函数中时返回空字符串
5.__CLASS__ (class)
返回当前所在类名,包含命名空间,区分大小写
6.__TRAIT__ (trail)
返回当前所在Trait名,包含命名空间,区分大小写
7.__METHOD__ (method)
返回当前所在方法名,(返回该方法被定义时的名字)包含命名空间,区分大小写
8.__NAMESPACE__ (namespace)
返回当前命名空间,区分大小写
<?php
//这是第2行
echo __LINE__;//3
echo __FILE__;//D:\www\1.php (返回文件路径(绝对路径))
echo __DIR__;//D:\www (返回文件所在的目录)
echo userList();//userList
function userList()
{
echo __FUNCTION__; //返回函数名称,即userList
}
<?php
namespace app\controller; //当前命名空间
trait Person {
public static function demo()
{
echo __TRAIT__;//app\controller\Person返回当前所在Trait名,包含命名空间
}
}
class User //类名:User
{
use Person;
public static function test()
{
echo __CLASS__;//app\controller\User
echo __METHOD__;//app\controller\User::test
}
}
User::test();
User::demo();
echo __NAMESPACE__;//app\controller
PHP的八个魔术常量_辰风沐阳的博客-CSDN博客_php魔术常量
五、命名空间
PHP 命名空间可以解决以下两类问题:
- 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
- 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
1.定义命名空间
<?php
// 定义代码在 'MyProject' 命名空间中。通过 namespace 来声明
namespace MyProject;
// ... 代码 ...
?>
//可以在同一个文件中定义多个不同的命名空间代码,但不建议使用这种语法,建议使用大括号{}形式
如:
<?php
//在同一个文件中定义多个命名空间
namespace MyProject;
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
namespace AnotherProject;
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
//采用{}形式
namespace MyProject {
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
namespace AnotherProject {
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
?>
但是!将全局的非命名空间中的代码与命名空间中的代码组合在一起,只能使用大括号形式的语法。如:
<?php
/*declare 语句用于定义源文件编码,可在声明命名空间之前使用(唯一),其他所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前。*/
declare(encoding='UTF-8'); //定义多个命名空间和不包含在命名空间中的代码
namespace MyProject { //声明命名空间
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
namespace { // 全局代码必须用一个不带名称的 namespace 语句加上大括号括起来
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>
/*以下代码会出现语法错误:
<html>
<?php
namespace MyProject; // 命名空间前出现了“<html>” 会致命错误 - 命名空间必须是程序脚本的第一条语句
?>
*/
2.子命名空间
可以使用分层次的方式定义
<?php
namespace MyProject\Sub\Level; //声明分层次的单个命名空间
const CONNECT_OK = 1;
class Connection { /* ... */ }
function Connect() { /* ... */ }
?>
上面的例子创建了常量 MyProject\Sub\Level\CONNECT_OK,类 MyProject\Sub\Level\Connection 和函数 MyProject\Sub\Level\Connect。
3.命名空间使用?
4.命名空间和动态语言特征?
5.namespace关键字和__NAMESPACE__常量
都用于访问当前命名空间内部元素
1)常量__NAMESPACE__的值是包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串。
在命名空间中的代码:
<?php
namespace MyProject; echo '"', __NAMESPACE__, '"'; // 输出 "MyProject"
?>
全局代码:
<?php echo '"', __NAMESPACE__, '"'; // 输出 "" ?>
2)关键字 namespace 可用来显式访问当前命名空间或子命名空间中的元素。它等价于类中的 self 操作符
<?php
//命名空间中的代码 ,全局代码则直接namespace\...
namespace MyProject;
use blah\blah as mine; // 引入了 blah\blah 命名空间,并定义了个别名mine
mine\mine(); // 调用函数 blah\blah\mine()
namespace\blah\mine(); // 调用函数 MyProject\blah\mine()
?>
6.使用命名空间:别名/导入
有两种使用别名或导入方式:为类名称使用别名,或为命名空间名称使用别名
如: use My\Full\Classname as Another; // 导入My\Full\Classname,并用Another作为别名
一行中包含多个use语句:
use My\Full\Classname as Another, My\Full\NSname;
7.使用命名空间:后备全局函数/常量?
8.全局空间
如果没有定义任何命名空间,所有的类与函数的定义都是在全局空间
<?php
namespace A\B\C;
/* 这个函数是 A\B\C\fopen */
function fopen() {
/* ... */
$f = \fopen(...); // 调用全局的fopen函数,名称前加上前缀 \ 表示该名称是全局空间中的名称
return $f;
}
?>