php 基本知识点备忘

原站地址:http://www.runoob.com/php/php-intro.html

本文目的: 精简方式记录最重要的知识点,方便快速复习

一、语法

1. PHP 脚本以 <?php 开始,以 ?> 结束

<?php
// PHP 代码
?>

2. 每个代码行都必须以分号结束

3. 有两种在浏览器输出文本的基础指令:echo 和 print

二、变量

1. 变量以 $ 符号开始,后面跟着变量的名称

2. 变量名是区分大小写的

3. PHP 是弱类型语言,不必声明变量的数据类型, 它会根据变量的值,自动转换为正确的数据类型。

4. 在函数内部访问全局变量,要加global

$x=5;
function myTest()
{
    global $x;
}

   或者使用$GLOBALS

$y=10;
function myTest()
{
    $GLOBALS['y'];
}

5. php也有静态变量关键字: static 

三、 EOF:更方便地输出多行文本

<?php
echo <<<EOF
<h1>我的第一个标题</h1>
<p>我的第一个段落。</p>
EOF;
// 结束需要独立一行且前后不能空格
?>

四、数据类型

1. 整型的三种进制:十进制, 十六进制( 以 0x 为前缀:0x8C)或 八进制(前缀为 0:047)

2.  NULL、TRUE、FALSE不区分大小写

3. var_dump 可以输出数据类型和内容,比echo和print更强大

4. 对象里面的关键字this, 就是指向当前对象实例的指针

五、常量

1. 定义一个常量(常量名不需要加 $ 修饰符): 

define("GREETING", "欢迎访问 Runoob.com");
echo GREETING; // 输出 "欢迎访问 Runoob.com"

六、字符串

1. 字符串可以用  .  符号链接起来:  echo $txt1 . " " . $txt2;

2. 计算字符串长度: strlen("Hello world!");

3. 字符串内查找:echo strpos("Hello world!","world");

    返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。

七、运算符

1.  php 有递增/递减运算符 ++ 和 -- 。 

    ++ x 预递增,  x ++ 后递增, -- x 预递减, x -- 后递减

2. 等于: ==  ,  绝对等于:===   (数值相同且类型不同)

    不等于: != 或者 <>  ,  绝对不等于: !==  (数值不同或类型不同)

3. 逻辑运算符: and 或 &&, or 或 || ,异或 xor , 非 !x

4. 三元运算符: (expr1) ? (expr2) : (expr3)

5. 组合比较符(PHP7才支持)  

    $c = $a <=> $b; 

   如果 $a > $b, 则 $c 的值为 1; 如果 $a == $b, 则 $c 的值为 0;  如果 $a < $b, 则 $c 的值为 -1。

6. or 和 ||,&& 和 and 都是逻辑运算符,效果一样,但是其优先级却不一样。 ||,&& 优先级更高

八、If...Else 语句:

if (条件){
    if 条件成立时执行的代码;
}
elseif (条件){
    elseif 条件成立时执行的代码;
}
else{
    条件不成立时执行的代码;
}

九、If...Else 语句:

switch (n) {
    case label1:
        如果 n=label1,此处代码将执行;
        break;
    case label2:
        如果 n=label2,此处代码将执行;
        break;
    default:
        如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
}

十、数组

1. 三种类型的数组:

1.1 数值数组 - 数字 ID 键
1.2 关联数组 - 就是c++的map
1.3 多维数组 

2. 数值数组:

2.1 自动分配 ID 键(ID 键总是从 0 开始): $cars=array("Volvo","BMW","Toyota");

2.2 人工分配 ID 键: $cars[0]="Volvo"; $cars[1]="BMW"; $cars[2]="Toyota";  (不需要事先声明长度)

2.3 获取数组的长度: count($cars) 

2.4 遍历数值数组:

$arrlength=count($cars);
for($x=0; $x<$arrlength; $x++){
    ......
}

3. 关联数组:

3.1 定义方式一:$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

3.2 定义方式二: $age['Peter']="35"; $age['Ben']="37"; $age['Joe']="43";

3.3 遍历关联数组:

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value){   //$x是key,$x_value是值
    ......
}

十一、数组排序函数

1.  sort()  还有其他排序函数,可以支持逆序排序、根据键排序、根据值排序

十二、超级全局变量

1. $_SERVER['PHP_SELF'] :当前执行脚本的文件名

2. $_SERVER['SERVER_ADDR']:当前运行脚本所在的服务器的 IP 地址。

3. $_SERVER['SERVER_NAME']:当前运行脚本所在的服务器的主机名

4. $_SERVER['REQUEST_METHOD']:访问页面使用的请求方法;例如,"GET", "HEAD","POST","PUT"。

5. $_SERVER['REMOTE_ADDR']:浏览当前页面的用户的 IP 地址

6. $_SERVER['REMOTE_PORT']:用户机器上连接到 Web 服务器所使用的端口号

7. $_SERVER['SCRIPT_FILENAME']:当前执行脚本的绝对路径。

8. $_SERVER['SERVER_PORT']:Web 服务器使用的端口。

9. $_SERVER['SCRIPT_NAME']:包含当前脚本的路径

10. $_REQUEST:收集表单中的 input 字段数据

11. $_POST:method="post"时,收集表单中的 input 字段数据

12. $_GET:method="get"时,收集表单中的 input 字段数据

十二、While 循环

while (条件) {
    要执行的代码;
}
do {
    要执行的代码;
}
while (条件);

十三、For 循环

for (初始值; 条件; 增量){
    要执行的代码;
}
//$array: 数组
//$value:遍历过程中获得的值
foreach ($array as $value){
    要执行代码;
}

十四、魔术常量

1. __LINE__:当前行号

2. __FILE__:完整路径和文件名

3. __DIR__:文件所在的目录

4. __FUNCTION__ 和 __METHOD__:该函数被定义时的名字

5. __CLASS__:该类被定义时的名字

6. __NAMESPACE__:命名空间的名称

7. __TRAIT__: 代码复用的一个方法,功能和C++的inline一样

十五、命名空间

1. 定义命名空间:   namespace MyProject;

2. 定义多层命名空间:  namespace Foo\Bar\subnamespace;

3. 别名/导入:

namespace foo;
use My\Full\Classname as Another;

$obj = new namespace\Another; // 实例化 foo\Another 对象
$obj = new Another; // 实例化 My\Full\Classname 对象

十六、面向对象

1. 类定义: (注意:变量使用 var 来声明)

class phpClass {
  var $var1 = "constant string";
  function myfunc ($arg1, $arg2) {
     [..]
  }
}

2. 构造函数 和 析构函数

class MyDestructableClass {
   function __construct() { //构造函数
       $this->name = "MyDestructableClass"; //注意这里使用 this
   }
   function __destruct() {  //析构函数
       print "销毁 " . $this->name . "\n";
   }
}
$obj = new MyDestructableClass();    //使用new 和 ()

3. 继承:使用 extends

class Child extends Parent {
   // 代码部分
}

4. 访问控制:public,protected,private

class MyClass{
    public $public = 'Public';
    protected $protected = 'Protected';
    private $private = 'Private';
}

5. 接口:通过 interface 和 implements 关键字来定义, 类必须实现接口中定义的所有方法,否则会报一个致命错误。

interface iTemplate{
    public function setVariable($name, $var);
}
class Template implements iTemplate{
    public function setVariable($name, $var){
        [......]
    }
}

6. 常量: 

class MyClass{
    const constant = '常量值';
}

echo MyClass::constant; //输出常量值

7. 抽象类:使用  abstract 关键字

abstract class AbstractClass{
    // 强制要求子类定义这些方法
    abstract protected function getValue();
}

class ConcreteClass1 extends AbstractClass{
    protected function getValue() {
        return "ConcreteClass1";
    }
}

8. Static 关键字:可以不实例化类而直接访问

class Foo {
  public static $my_static = 'foo';
}
Foo::$my_static = 'abc';    //修改
print Foo::$my_static;      //使用  

9. Final 关键字: 父类中的方法被声明为 final,则子类无法覆盖该方法。

class BaseClass {
   final public function moreTesting() {
       [....]
   }
}
class ChildClass extends BaseClass {
   public function moreTesting() {
       [....]
   }
}
// 报错信息 Fatal error: Cannot override final method BaseClass::moreTesting() 

10. 调用父类构造方法:调用 parent::xxxxxxx() 

class BaseClass {
   function __construct() {
       [......]
   }
}
class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();  //调用父类的构造方法
       [......]
   }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值