Qter 发表于 2020-4-13 15:26:00

PHP 教程

本帖最后由 Qter 于 2020-4-13 16:22 编辑

https://www.runoob.com/php/php-tutorial.html
如果您的服务器不支持 PHP,您必须:
[*]安装 Web 服务器
[*]安装 PHP
[*]安装数据库,比如 MySQL
官方 PHP 网站(PHP.net)有 PHP 的安装说明: http://php.net/manual/en/install.php      PHP 脚本以 <?php 开始,以 ?> 结束:    变量以 $ 符号开始,后面跟着变量的名称变量名是区分大小写的($y 和 $Y 是两个不同的变量)PHP 是一门弱类型语言不必向 PHP 声明该变量的数据类型。PHP 会根据变量的值,自动把变量转换为正确的数据类型。PHP 有四种不同的变量作用域:local 局部作用域global 全局作用域staticparameter

要在一个函数中访问一个全局变量,需要使用 global 关键字。PHP 将所有全局变量存储在一个名为 $GLOBALS 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。
tatic 作用域当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。要做到这一点,请在您第一次声明变量时使用 static 关键字

echo 和 print 区别:
echo - 可以输出一个或多个字符串print - 只允许输出一个字符串,返回值总为 1提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
PHP EOF(heredoc) 是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。$a= <<<EOF      "abc"$name      "123"EOF;
PHP 5 数据类型String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。 PHP var_dump() 函数返回变量的数据类型和值:
PHP 对象对象数据类型也可以用于存储数据。在 PHP 中,对象必须声明。首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。然后我们在类中定义数据类型,然后在实例化的类中使用数据类型:<?phpclass Car{var $color;function __construct($color="green") {    $this->color = $color;}function what_color() {    return $this->color;}}?>可以通过设置变量值为 NULL 来清空变量数据:$x=null;PHP 类型比较松散比较:使用两个等号 == 比较,只比较值,不比较类型。严格比较:用三个等号 === 比较,除了比较值,也比较类型。常量常量值被定义后,在脚本的其他任何地方都不能被改变。 (常量名不需要加 $ 修饰符)。设置常量,使用 define() 函数,函数语法如下:bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )该函数有三个参数:name:必选参数,常量名称,即标志符。value:必选参数,常量的值。case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。PHP 并置运算符在 PHP 中,只有一个字符串运算符。并置运算符 (.) 用于把两个字符串值连接起来。echo $txt1 . " " . $txt2; strlen() 函数返回字符串的长度(字节数)。strpos() 函数用于在字符串内查找一个字符或一段指定的文本。如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。echo strpos("Hello world!","world");之所以是 6 而不是 7 的原因是,字符串中第一个字符的位置是 0,而不是 1。 数组在 PHP 中,有三种类型的数组: $cars=array("Volvo","BMW","Toyota"); (ID 键总是从 0 开始)数值数组 - 带有数字 ID 键的数组关联数组 - 带有指定的键的数组,每个键关联一个值多维数组 - 包含一个或多个数组的数组count() 函数用于返回数组的长度(元素的数量) echo count($cars);遍历数值数组$cars=array("Volvo","BMW","Toyota");$arrlength=count($cars);
for($x=0;$x<$arrlength;$x++){    echo $cars[$x];    echo "<br>";}PHP 关联数组$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value){    echo "Key=" . $x . ", Value=" . $x_value;    echo "<br>";}数组排序函数sort() - 对数组进行升序排列rsort() - 对数组进行降序排列asort() - 根据关联数组的值,对数组进行升序排列ksort() - 根据关联数组的键,对数组进行升序排列arsort() - 根据关联数组的值,对数组进行降序排列krsort() - 根据关联数组的键,对数组进行降序排列$cars=array("Volvo","BMW","Toyota");sort($cars);PHP 超级全局变量$GLOBALS$GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。 $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; $_SERVER$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。echo $_SERVER['SERVER_NAME'];echo $_SERVER['HTTP_USER_AGENT'];$_REQUEST$_REQUEST 用于收集HTML表单提交的数据。$name = $_REQUEST['fname']; $_POST$_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"。$name = $_POST['fname']; $_GET$_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。$_GET 也可以收集URL中发送的数据。echo "Study " . $_GET['subject'] . " @ " . $_GET['web'];$_FILES$_ENV$_COOKIE$_SESSION
foreach 循环$x=array("one","two","three");foreach ($x as $value){    echo $value . "<br>";}PHP 函数function add($x,$y){    $total=$x+$y;    return $total;}魔术常量PHP 向它运行的任何脚本提供了大量的预定义常量。__LINE__文件中的当前行号。__FILE__ 文件的完整路径和文件名__DIR__ 文件所在的目录。__FUNCTION__ 函数名称(PHP 4.3.0 新加)__CLASS__ 类的名称(PHP 4.3.0 新加)__TRAIT__ 实现了代码复用的一个方法__METHOD__ 类的方法名(PHP 5.0.0 新加)__NAMESPACE__ 当前命名空间的名称(区分大小写)
定义命名空间// 定义代码在 'MyProject' 命名空间中namespace MyProject;局代码必须用一个不带名称的 namespace 语句加上大括号括起来namespace { // 全局代码session_start();$a = MyProject\connect();echo MyProject\Connection::start();}namespace MyProject\Sub\Level;//声明分层次的单个命名空间命名空间使用非限定名称,或不包含前缀的类名称,例如 $a=new foo();限定名称,或包含前缀的名称,例如 $a = new subnamespace\foo(); 完全限定名称,或包含了全局前缀操作符的名称,例如, $a = new \currentnamespace\foo(); 使用命名空间:别名/导入在PHP中,别名是通过操作符 use 来实现的. 类定义PHP 定义类通常语法格式如下:class Site {/* 成员变量 */var $url;var $title;
/* 成员函数 */function setUrl($par){   $this->url = $par;}
function getUrl(){   echo $this->url . PHP_EOL;}
function setTitle($par){   $this->title = $par;}
function getTitle(){   echo $this->title . PHP_EOL;}}变量 $this 代表自身的对象。PHP_EOL 为换行符。
PHP 中创建对象$runoob = new Site;$runoob->setTitle( "菜鸟教程" );$runoob->setUrl( 'www.runoob.com' );$runoob->getTitle();$runoob->getUrl();PHP 构造函数构造函数是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,在创建对象的语句中与 new 运算符一起使用。void __construct ([ mixed $args [, $... ]] )function __construct( $par1, $par2 ) {   $this->url = $par1;   $this->title = $par2;}析构函数析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。void __destruct ( void )继承PHP 使用关键字 extends 来继承一个类,PHP 不支持多继承,格式如下:// 子类扩展站点类别class Child_Site extends Site {   var $category;
    function setCate($par){      $this->category = $par;    }
    function getCate(){      echo $this->category . PHP_EOL;    }}方法重写如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。接口使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
接口中定义的所有方法都必须是公有,这是接口的特性。
要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。常量可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。const constant = '常量值';抽象类 abstract 任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。
定义为抽象的类不能被实例化。
被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。Static 关键字声明类属性或方法为 static(静态),就可以不实例化类而直接访问。
静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。
由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。
静态属性不可以由对象通过 -> 操作符来访问。Final 关键字PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。调用父类构造方法PHP 不会在子类的构造方法中自动的调用父类的构造方法。要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct() 。

Qter 发表于 2020-4-16 14:21:41

本帖最后由 Qter 于 2020-6-5 19:13 编辑

https://www.w3school.com.cn/php/php_mysql_select.asp
https://www.runoob.com/php/php-oop.html
页: [1]
查看完整版本: PHP 教程