Web后端语言基础——PHP+SQL+Mysql数据库
后台-插件-广告管理-内容页头部广告(手机) |
PHP
PHP 是什么?
- PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。
- PHP 脚本在服务器上执行。
- PHP 可免费下载使用。
PHP 文件
- PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码
- PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器
- PHP 文件的默认文件扩展名是 .php。
PHP 能做什么?
- PHP 可以生成动态页面内容
- PHP 可以创建、打开、读取、写入、关闭服务器上的文件
- PHP 可以收集表单数据
- PHP 可以发送和接收 cookies
- PHP 可以添加、删除、修改您的数据库中的数据
- PHP 可以限制用户访问您的网站上的一些页面
- PHP 可以加密数据
通过 PHP,您不再限于输出 HTML。您可以输出图像、PDF 文件,甚至 Flash 电影。您还可以输出任意的文本,比如 XHTML 和 XML。
基本的 PHP 语法
PHP 脚本可以放在文档中的任何位置。
PHP 脚本以 <?php 开始,以 ?> 结束:
PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。
通过 PHP,有两种在浏览器输出文本的基础指令:echo 和 print。
PHP echo 和 print 语句
echo 和 print 区别:
- echo - 可以输出一个或多个字符串
echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号: echo 或 echo()。
- print - 只允许输出一个字符串,返回值总为 1
print 同样是一个语言结构,可以使用括号,也可以不使用括号: print 或 print()。
提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
注释
//单行注释 /**/多行注释
PHP 变量
与代数类似,可以给 PHP 变量赋予某个值(x=5)或者表达式(z=x+y)。
变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如 age、carname、totalvolume)。
PHP 变量规则:
- 变量以 $ 符号开始,后面跟着变量的名称
- 变量名必须以字母或者下划线字符开始
- 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
- 变量名不能包含空格
- 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
PHP 语句和 PHP 变量都是区分大小写的。
创建(声明)PHP 变量
PHP 没有声明变量的命令。
变量在第一次赋值给它的时候被创建
- <?php
- $txt="Hello world!";
- $x=5;
- $y=10.5;
- ?>
PHP 变量作用域
变量的作用域是脚本中变量可被引用/使用的部分。
PHP 有四种不同的变量作用域:
- local
- global
- static
- parameter
局部和全局作用域
在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。
PHP global 关键字
global 关键字用于函数内访问全局变量。
在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字:
- <?php
- $x=5;
- $y=10;
- function myTest()
- {
- global $x,$y;
- $y=$x+$y;
- }
- myTest();
- echo $y; // 输出 15
- ?>
PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。
也可以写成:
- <?php
- $x=5;
- $y=10;
- function myTest()
- {
- $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
- }
- myTest();
- echo $y;
- ?>
Static 作用域
当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。
要做到这一点,请在您第一次声明变量时使用 static 关键字:
- <?php
- function myTest()
- {
- static $x=0;
- echo $x;
- $x++;
- echo PHP_EOL; // 换行符
- }
- myTest();
- myTest();
- myTest();
- ?>
然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。
注释:该变量仍然是函数的局部变量。
PHP EOF(heredoc) 使用说明
PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。
使用概述:
- 1. 必须后接分号,否则编译通不过。
- 2. EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
- 3. 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
- 4. 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
- 5. 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。
- <?php
- echo <<<EOF
- <h1>我的第一个标题</h1>
- <p>我的第一个段落。</p>
- EOF;
- // 结束需要独立一行且前后不能空格
- ?>
注意:
1.以 << 2.开始标记和结束标记相同,比如常用大写的 EOT、EOD、EOF 来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可。 3.位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符 . 或 , 来拼接,如下: 虽然 PHP 是弱类型语言,但也需要明白变量类型及它们的意义,因为我们经常需要对 PHP 变量进行比较,包含松散和严格比较。 例如,"42" 是一个字符串而 42 是一个整数。FALSE 是一个布尔值而 "FALSE" 是一个字符串。 常量是一个简单值的标识符。该值在脚本中不能改变。 一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。 设置常量,使用 define() 函数,函数语法如下: 该函数有三个参数: name:必选参数,常量名称,即标志符。 value:必选参数,常量的值。 case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感,默认是大小写敏感的。 注意:自 PHP 7.3.0 开始,定义不区分大小写的常量已被弃用。从 PHP 8.0.0 开始,只有 false 是可接受的值,传递 true 将产生一个警告。 常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用 在 PHP 中,只有一个字符串运算符。 并置运算符 (.) 用于把两个字符串值连接起来。 下面的实例演示了如何将两个字符串变量连接在一起: 上面的代码将输出:Hello world! What a nice day! 提示:在上面的代码中,我们已经使用了两次并置运算符。这是由于我们需要在两个字符串之间插入一个空格。 有时知道字符串值的长度是很有用的。 strlen() 函数返回字符串的长度(字节数)。 下面的实例返回字符串 "Hello world!" 的长度: strpos() 函数用于在字符串内查找一个字符或一段指定的文本。 如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。 下面的实例在字符串 "Hello world!" 中查找文本 "world": 上面的代码将输出:6 另一个条件运算符是"?:"(或三元)运算符 。 语法格式 PHP7+ 支持组合比较符(combined comparison operator)也称之为太空船操作符,符号为 <=>。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。 语法格式如下: 解析如下: 当您编写代码时,您常常需要为不同的判断执行不同的动作。您可以在代码中使用条件语句来完成此任务。 在 PHP 中,提供了下列条件语句: 在 PHP 中,array() 函数用于创建数组: array(); 在 PHP 中,有三种类型的数组: 这里有两种创建数值数组的方法: 自动分配 ID 键(ID 键总是从 0 开始): $cars=array("Volvo","BMW","Toyota"); 人工分配 ID 键: $cars[0]="Volvo"; count() 函数用于返回数组的长度(元素的数量): 遍历并打印数值数组中的所有值,您可以使用 for 循环,如下所示: 关联数组是使用您分配给数组的指定的键的数组。 这里有两种创建关联数组的方法: $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); or: $age['Peter']="35"; 遍历并打印关联数组中的所有值,您可以使用 foreach 循环: PHP 数组排序函数: 下面的实例根据数组的键,对关联数组进行升序排列: PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。 PHP 超级全局变量列表: 本章节我们将讲解几个常用的超级全局变量,其余变量我们在接下来几个章节会介绍到。 在您编写代码时,您经常需要让相同的代码块一次又一次地重复运行。我们可以在代码中使用循环语句来完成这个任务。 在 PHP 中,提供了下列循环语句: foreach 循环用于遍历数组。 每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。 每一次循环,当前数组元素的键与值就都会被赋值给 $key 和 $value 变量(数字指针会逐一地移动),在进行下一次循环时,你将看到数组中的下一个键与值。 实例: 函数是通过调用函数来执行的。 PHP 函数准则: 变量函数是指在 PHP 中,将一个变量作为函数名来调用的函数。 变量函数可以让我们在运行时动态地决定调用哪个函数。 也可以用变量函数的语法来调用一个对象的方法。 面向对象编程的三个主要特性: 封装(Encapsulation):指将对象的属性和方法封装在一起,使得外部无法直接访问和修改对象的内部状态。通过使用访问控制修饰符(public、private、protected)来限制属性和方法的访问权限,从而实现封装。 继承(Inheritance):指可以创建一个新的类,该类继承了父类的属性和方法,并且可以添加自己的属性和方法。通过继承,可以避免重复编写相似的代码,并且可以实现代码的重用。 多态(Polymorphism):指可以使用一个父类类型的变量来引用不同子类类型的对象,从而实现对不同对象的统一操作。多态可以使得代码更加灵活,具有更好的可扩展性和可维护性。在 PHP 中,多态可以通过实现接口(interface)和使用抽象类(abstract class)来实现。 PHP 定义类通常语法格式如下: 解析如下: 类使用 class 关键字后加上类名定义。 类名后的一对大括号({})内可以定义变量和方法。 类的变量使用 var 来声明, 变量也可以初始化值。 函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化的对象访问。 类创建后,我们可以使用 new 运算符来实例化该类的对象: 以上代码我们创建了三个对象,三个对象各自都是独立的,接下来我们来看看如何访问成员方法与成员变量。 在实例化对象后,我们可以使用该对象调用成员方法,该对象的成员方法只能操作该对象的成员变量: 构造函数是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,在创建对象的语句中与 new 运算符一起使用。 PHP 5 允许开发者在一个类中定义一个方法作为构造函数,语法格式如下: 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。 PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,其语法格式如下: PHP 使用关键字 extends 来继承一个类,PHP 不支持多继承,格式如下: 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。 实例中重写了 getUrl 与 getTitle 方法: PHP 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。 类中的方法可以被定义为公有,私有或受保护。如果没有设置这些关键字,则该方法默认为公有。 使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。 接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。 接口中定义的所有方法都必须是公有,这是接口的特性。 要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。 任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。 定义为抽象的类不能被实例化。 被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。 继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或者公有的,而不能定义为私有的。 有一点很重要的事情值得注意,当处理 HTML 表单时,PHP 能把来自 HTML 页面中的表单元素自动变成可供 PHP 脚本使用。 下面的实例包含了一个 HTML 表单,带有两个输入框和一个提交按钮。 当用户填写完上面的表单并点击提交按钮时,表单的数据会被送往名为 "welcome.php" 的 PHP 文件: HTML 表单代码如下所示: 什么是 $_SERVER["PHP_SELF"] 变量? $_SERVER["PHP_SELF"]是超级全局变量,返回当前正在执行脚本的文件名,与 document root相关。 该表单使用 method="post" 方法来提交数据。 所以, $_SERVER["PHP_SELF"] 会发送表单数据到当前页面,而不是跳转到不同的页面。 $_SERVER["PHP_SELF"] 变量有可能会被黑客使用! 当黑客使用跨网站脚本的HTTP链接来攻击时,$_SERVER["PHP_SELF"]服务器变量也会被植入脚本。原因就是跨网站脚本是附在执行文件的路径后面的,因此$_SERVER["PHP_SELF"]的字符串就会包含HTTP链接后面的JavaScript程序代码。 什么是 htmlspecialchars()方法? htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。 预定义的字符是: $_SERVER["PHP_SELF"] 可以通过 htmlspecialchars() 函数来避免被利用。 form 代码如下所示: htmlspecialchars() 把一些预定义的字符转换为 HTML 实体。现在如果用户想利用 PHP_SELF 变量, 结果将输出如下所示: 预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。 从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送信息的量也有限制 在 HTML 表单中使用 method="get" 时,所有的变量名和值都会显示在 URL 中。 注释:所以在发送密码或其他敏感信息时,不应该使用这个方法! 然而,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。 注释:HTTP GET 方法不适合大型的变量值。它的值是不能超过 2000 个字符的。 预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。 从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。 注释:然而,默认情况下,POST 方法的发送信息的量最大值为 8 MB(可通过设置 php.ini 文件中的 post_max_size 进行更改)。 从带有 POST 方法的表单发送的信息,对任何人都是不可见的,并且对发送信息的量也没有限制。 然而,由于变量不显示在 URL 中,所以无法把页面加入书签。 预定义的 $_REQUEST 变量包含了 $_GET、$_POST 和 $_COOKIE 的内容。 $_REQUEST 变量可用来收集通过 GET 和 POST 方法发送的表单数据。 PHP 类型比较
PHP 常量
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
常量是全局的
字符串
PHP 并置运算符
PHP strlen() 函数
PHP strpos() 函数
PHP 运算符(仅补充)
PHP 算术运算符
PHP 赋值运算符
PHP 比较运算符
PHP 逻辑运算符
数组运算符
三元运算符
(expr1) ? (expr2) : (expr3)
组合比较符(PHP7+)
$c = $a <=> $b;
PHP 条件语句
PHP 数组
在 PHP 中创建数组
PHP 数值数组
$cars[1]="BMW";
$cars[2]="Toyota";获取数组的长度 - count() 函数
遍历数值数组
";PHP 关联数组
$age['Ben']="37";
$age['Joe']="43";遍历关联数组
";PHP - 数组排序函数
asort() - 根据数组的值,对数组进行升序排列
ksort() - 根据数组的键,对数组进行升序排列
PHP 超级全局变量
PHP 循环
foreach 循环
语法
PHP 函数
创建 PHP 函数
语法
PHP 变量函数
\n";
\n";面向对象(与Java相似)
PHP 类定义
PHP 中创建对象
调用成员方法
PHP 构造函数
析构函数
继承
方法重写
访问控制
方法的访问控制
接口
抽象类
PHP 表单和用户输入
PHP 表单处理
表单元素
PHP表单中需引起注重的地方?
如何避免 $_SERVER["PHP_SELF"] 被利用?
$_GET 变量
何时使用 method="get"?
$_POST 变量
何时使用 method="post"?
PHP $_REQUEST 变量
SQL+Mysql数据库(from黑马程序员)
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |