基于菜鸟教程的 php 学习总结

创维_yang · · 46 次点击 · · 开始浏览    

PHP 超级全局变量

  • $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。

更多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 命名空间

可以解决以下两类问题:

  1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
  2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

建议使用下面的大括号形式的语法

<?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 面向对象

主要三个特性:

  • 对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为。
  • 对象的形态:当施加那些方法是对象如何响应,颜色,尺寸,外型。
  • 对象的表示:对象的表示就相当于身份证,具体区分在相同的行为与状态下有什么不同。

比如 Animal(动物) 是一个抽象类,我们可以具体到一只狗跟一只羊,而狗跟羊就是具体的对象,他们有颜色属性,可以写,可以跑等行为状态。

定义:

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 包含文件

include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:

  • require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
  • include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。

本文来自:开源中国博客

感谢作者:创维_yang

查看原文:基于菜鸟教程的 php 学习总结

46 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet