基于菜鸟教程的 php 学习总结
2018-02-09 00:00
477 查看
PHP 超级全局变量
$GLOBALS
在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字:
PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。
上面的实例可以写成这样:
访问: http://www.runoob.com/php/php-superglobals.html
常见输出语句
echo(): 可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用,可以不加括号。输出的速度比 print 快。
print(): 函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。可以不加括号。
print_r(): 可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。
var_dump(): 判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
数据类型
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。
PHP 常量
一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
注意: 常量在整个脚本中都可以使用。
设置常量,使用 define() 函数,函数语法如下:
该函数有三个参数:
name:必选参数,常量名称,即标志符。
value:必选参数,常量的值。
case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认大小写敏感。
也可以用
PHP 字符串相关
并置运算符 (.) 用于把两个字符串值连接起来。
strlen() 函数返回字符串的长度(字符数)。 注意:
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
mb_substr() 比 substr 多一个参数,用来指定字符串编码。可实现截取中文字符串无乱码
更多string 函数访问:http://www.runoob.com/php/php-ref-string.html
PHP 关联数组
两种创建关联数组的方法:
or:
遍历并打印关联数组中的所有值,可以使用 foreach 循环
foreach 两种语法格式
数组参考手册:http://www.runoob.com/php/php-ref-array.html
魔术变量
__LINE__( 文件中的当前行号。 )
__FILE__ ( 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。)
__DIR__ ( 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。 )
__FUNCTION__
__CLASS__
__METHOD__
__ NAMESPACE __
__TRAIT__( 实现了代码复用的一个方法 )
以上例程会输出:
从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。
PHP 命名空间
可以解决以下两类问题:
用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
建议使用下面的大括号形式的语法
访问: http://www.runoob.com/php/php-namespace.html
PHP 面向对象
主要三个特性: 封装, 继承,多态
定义:
调用
继承: PHP 使用关键字 extends 来继承一个类,PHP 不支持多继承
注意: 如果子类重写了父类的公有方法,并定义为私有,则会报错
如果子类重写了父类的私有方法,并定义为公有,则可正常运行
Final 关键字
PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。
调用父类构造方法
PHP 不会在子类的构造方法中自动的调用父类的构造方法。要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct() 。
PHP 重载
php是弱类型语言,并没有像JAVA这种强类型语言一样有重载。
重载一般来说就是拥有相同的函数名或方法名,但是参数列表却不同(包括参数个数和参数类型)。 但是没有并不意味着不能实现。php 有四种机制可以实现重载。
参考: http://blog.csdn.net/whd526/article/details/70239791
官网参考: http://php.net/manual/zh/language.oop5.overloading.php
PHP 包含文件
include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:
require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。
COOKIE 和 SESSION
Session 的工作机制是:为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,或者通过 URL 进行传导。
在生成的 COOKIE 中会存在 key 为 PHPSESSID 的值,该值与 session_id() 一致,可通过该 cookie 值获取相关 session。
$GLOBALS
在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字:
<?php $x=5; $y=10; function myTest(){ global $x,$y; $y=$x+$y; } myTest(); echo $y; // 输出 15 ?>
PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。
上面的实例可以写成这样:
function myTest(){ $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y']; }
访问: http://www.runoob.com/php/php-superglobals.html
常见输出语句
echo(): 可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用,可以不加括号。输出的速度比 print 快。
print(): 函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。可以不加括号。
print_r(): 可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。
var_dump(): 判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
数据类型
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。
PHP 常量
一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
注意: 常量在整个脚本中都可以使用。
设置常量,使用 define() 函数,函数语法如下:
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
该函数有三个参数:
name:必选参数,常量名称,即标志符。
value:必选参数,常量的值。
case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认大小写敏感。
也可以用
const constant = '常量值';
PHP 字符串相关
并置运算符 (.) 用于把两个字符串值连接起来。
strlen() 函数返回字符串的长度(字符数)。 注意:
echo strlen("中文字符"); // 输出 12输出结果为 12,因为一个中文占 3 个字符数。 可以使用 mb_strlen 设置指定编码输出中文字符个数:
echo mb_strlen("中文字符",'utf-8'); // 输出 4
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
mb_substr() 比 substr 多一个参数,用来指定字符串编码。可实现截取中文字符串无乱码
mb_substr($str, 0, 1, 'gbk'); //
更多string 函数访问:http://www.runoob.com/php/php-ref-string.html
PHP 关联数组
两种创建关联数组的方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
or:
$age['Peter']="35"; $age['Ben']="37"; $age['Joe']="43";
遍历并打印关联数组中的所有值,可以使用 foreach 循环
<?php $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); foreach($age as $x=>$x_value){ echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; } ?>
foreach 两种语法格式
foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement
数组参考手册:http://www.runoob.com/php/php-ref-array.html
魔术变量
__LINE__( 文件中的当前行号。 )
__FILE__ ( 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。)
__DIR__ ( 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。 )
__FUNCTION__
__CLASS__
__METHOD__
__ NAMESPACE __
__TRAIT__( 实现了代码复用的一个方法 )
<?php class Base { public function sayHello() { echo 'Hello '; } } trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello(); ?>
以上例程会输出:
Hello World!
从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。
PHP 命名空间
可以解决以下两类问题:
用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
建议使用下面的大括号形式的语法
<?php namespace MyProject { const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } } namespace AnotherProject { const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } } ?>
访问: http://www.runoob.com/php/php-namespace.html
PHP 面向对象
主要三个特性: 封装, 继承,多态
定义:
class Site { /* 成员变量 */ var $url; var $title; /* 构造函数 */ function __construct( $par1, $par2 ) { $this->url = $par1; $this->title = $par2; } /* 成员函数 */ function setUrl($par){ $this->url = $par; } /* 析构函数 */ function __destruct() { print "销毁 " . $this->name . "\n"; } }
调用
$runoob = new Site; $runoob->setUrl( 'www.runoob.com' ); // 或者 $runoob = new Site('www.runoob.com', '菜鸟教程');
继承: PHP 使用关键字 extends 来继承一个类,PHP 不支持多继承
注意: 如果子类重写了父类的公有方法,并定义为私有,则会报错
如果子类重写了父类的私有方法,并定义为公有,则可正常运行
Final 关键字
PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。
调用父类构造方法
PHP 不会在子类的构造方法中自动的调用父类的构造方法。要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct() 。
class SubClass extends BaseClass { function __construct() { parent::__construct(); // 子类构造方法不能自动调用父类的构造方法 print "SubClass 类中构造方法" . PHP_EOL; } }
PHP 重载
php是弱类型语言,并没有像JAVA这种强类型语言一样有重载。
重载一般来说就是拥有相同的函数名或方法名,但是参数列表却不同(包括参数个数和参数类型)。 但是没有并不意味着不能实现。php 有四种机制可以实现重载。
参考: http://blog.csdn.net/whd526/article/details/70239791
官网参考: http://php.net/manual/zh/language.oop5.overloading.php
PHP 包含文件
include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:
require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。
COOKIE 和 SESSION
Session 的工作机制是:为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,或者通过 URL 进行传导。
在生成的 COOKIE 中会存在 key 为 PHPSESSID 的值,该值与 session_id() 一致,可通过该 cookie 值获取相关 session。
$sessionId = $_COOKIE['PHPSESSID']; session_id($sessionId); session_start(); var_dump($_SESSION);
相关文章推荐
- 一个Php菜鸟的TCP/IP协议学习总结(概述)
- 一个菜鸟学习java web与php的总结
- 菜鸟PHP学习资料总结
- 基于PHP的AJAX学习笔记(教程)
- php基础教程——学习总结
- 我的xAjax入门教程——PHP学习日记之三
- PHP学习使用资源简单总结
- 学习maven的使用,看到一篇很实用的入门教程(菜鸟级入门)
- php面向对象学习教程5
- PHP学习使用资源简单总结
- php jpgraph学习教程
- 坏狼的PHP学习教程之第1天
- 菜鸟学习:动态网页PHP基础学习笔记
- 关于PHP接口的学习体会和学习总结
- 坏狼的PHP学习教程之第3天第1/2页
- 坏狼的PHP学习教程之第2天
- 学习php总结(一)
- PHP学习使用资源简单总结
- PHP学习使用资源简单总结