zoukankan      html  css  js  c++  java
  • PHP笔记

    PHP 是服务器端脚本语言。

    HelloWorld

    <!DOCTYPE html>
    <html>
    <body>
    
    <h1>My first PHP page</h1>
    
    <?php  //php开始标志
    echo "Hello World!";
    ?>  
    
    </body>
    </html>
    

    PHP基础

    变量

    $ 符号开始,后面跟着变量的名称,区分大小写。

    $x=5;
    

    作用域

    PHP 有四种不同的变量作用域:local,global,static,parameter。

    local:在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问。

    global:要在一个函数中访问一个全局变量,需要使用 global 关键字。

    
    <?php
    $x=5;
    $y=10;
     
    function myTest()
    {
        global $x,$y;
        $y=$x+$y;
    }
     
    myTest();
    echo $y; // 输出 15
    ?>
    

    static :函数销毁时不销毁该变量。

    parameter:参数。

    输出

    echo - 可以输出一个或多个字符串
    print - 只允许输出一个字符串,返回值总为 1

    echo

    <?php
    echo "<h2>PHP 很有趣!</h2>";
    echo "Hello world!<br>";
    echo "我要学 PHP!<br>";
    echo "这是一个", "字符串,", "使用了", "多个", "参数。";
    ?>
    

    print

    <?php
    print "<h2>PHP 很有趣!</h2>";
    print "Hello world!<br>";
    print "我要学习 PHP!";
    ?>
    

    EOF

    PHP 定界符 EOF 的作用就是按照原样,包括换行格式什么的,输出在其内部的东西;在 PHP 定界符 EOF 中的任何特殊字符都不需要转义;

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

    数据类型

    String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。

    常量

    设置常量,使用 define() 函数,函数语法如下:

    bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
    

    该函数有三个参数:

    • name:必选参数,常量名称,即标志符。
    • value:必选参数,常量的值。
    • case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。

    常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。

    字符串

    在 PHP 中,只有一个字符串运算符。并置运算符 (.) 用于把两个字符串值连接起来。

    <?php
    $txt1="Hello world!";
    $txt2="What a nice day!";
    echo $txt1 . " " . $txt2;
    ?> 
    

    strlen() 函数

    返回字符串的长度(字节数)。

    <?php
    echo strlen("Hello world!");
    ?> 
    

    strpos() 函数

    strpos() 函数用于在字符串内查找一个字符或一段指定的文本。

    <?php
    echo strpos("Hello world!","world");
    ?> 
    

    数组

    在 PHP 中,有三种类型的数组:

    • 数值数组 - 带有数字 ID 键的数组
    • 关联数组 - 带有指定的键的数组,每个键关联一个值
    • 多维数组 - 包含一个或多个数组的数组

    数值数组

    $cars=array("Volvo","BMW","Toyota");
    
    $cars[0]="Volvo";
    $cars[1]="BMW";
    $cars[2]="Toyota"; 
    
    $cars=array("Volvo","BMW","Toyota");
    $arrlength=count($cars);//count() 获取数组长度
    echo count($arrlength);
    
    for($x=0;$x<$arrlength;$x++) //遍历数组
    {
        echo $cars[$x];
        echo "<br>";
    }
    

    关联数组

    $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
    
    $age['Peter']="35";
    $age['Ben']="37";
    $age['Joe']="43"; 
    
    foreach($age as $x=>$x_value) //遍历数组
    {
        echo "Key=" . $x . ", Value=" . $x_value;
        echo "<br>";
    }
    

    数组排序

    • sort() - 对数组进行升序排列
    • rsort() - 对数组进行降序排列
    • asort() - 根据关联数组的值,对数组进行升序排列
    • ksort() - 根据关联数组的键,对数组进行升序排列
    • arsort() - 根据关联数组的值,对数组进行降序排列
    • krsort() - 根据关联数组的键,对数组进行降序排列
    <?php
    $cars=array("Volvo","BMW","Toyota");
    sort($cars);
    ?> 
    

    超级全局变量

    PHP 超级全局变量列表:

    $GLOBALS
    $_SERVER
    $_REQUEST
    $_POST
    $_GET
    $_FILES
    $_ENV
    $_COOKIE
    $_SESSION
    

    $GLOBALS

    $GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

    <?php 
    $x = 75; 
    $y = 25;
     
    function addition() 
    { 
        $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; 
    }
     
    addition(); 
    echo $z; 
    ?>
    
    100
    

    $_SERVER

    $_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。

    <?php 
    echo $_SERVER['PHP_SELF'];
    echo "<br>";
    echo $_SERVER['SERVER_NAME'];
    echo "<br>";
    echo $_SERVER['HTTP_HOST'];
    echo "<br>";
    echo $_SERVER['HTTP_REFERER'];
    echo "<br>";
    echo $_SERVER['HTTP_USER_AGENT'];
    echo "<br>";
    echo $_SERVER['SCRIPT_NAME'];
    ?>
    
    /untitled/test.php
    PhpStorm 2020.1.2
    localhost:63342
    
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0
    /untitled/test.php
    
    元素/代码 描述
    $_SERVER['PHP_SELF'] 当前执行脚本的文件名,与 document root 有关。例如,在地址为 http://example.com/test.php/foo.bar 的脚本中使用 $_SERVER['PHP_SELF']
    $_SERVER['GATEWAY_INTERFACE'] 服务器使用的 CGI 规范的版本;例如,"CGI/1.1"。
    $_SERVER['SERVER_ADDR'] 当前运行脚本所在的服务器的 IP 地址。
    $_SERVER['SERVER_NAME'] 当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定。(如: www.runoob.com)
    $_SERVER['SERVER_SOFTWARE'] 服务器标识字符串,在响应请求时的头信息中给出。 (如:Apache/2.2.24)
    $_SERVER['SERVER_PROTOCOL'] 请求页面时通信协议的名称和版本。例如,"HTTP/1.0"。
    $_SERVER['REQUEST_METHOD'] 访问页面使用的请求方法;例如,"GET", "HEAD","POST","PUT"。
    $_SERVER['REQUEST_TIME'] 请求开始时的时间戳。从 PHP 5.1.0 起可用。 (如:1377687496)
    $_SERVER['QUERY_STRING'] query string(查询字符串),如果有的话,通过它进行页面访问。
    $_SERVER['HTTP_ACCEPT'] 当前请求头中 Accept: 项的内容,如果存在的话。
    $_SERVER['HTTP_ACCEPT_CHARSET'] 当前请求头中 Accept-Charset: 项的内容,如果存在的话。例如:"iso-8859-1,*,utf-8"。
    $_SERVER['HTTP_HOST'] 当前请求头中 Host: 项的内容,如果存在的话。
    $_SERVER['HTTP_REFERER'] 引导用户代理到当前页的前一页的地址(如果存在)。由 user agent 设置决定。并不是所有的用户代理都会设置该项,有的还提供了修改 HTTP_REFERER 的功能。简言之,该值并不可信。)
    $_SERVER['HTTPS'] 如果脚本是通过 HTTPS 协议被访问,则被设为一个非空的值。
    $_SERVER['REMOTE_ADDR'] 浏览当前页面的用户的 IP 地址。
    $_SERVER['REMOTE_HOST'] 浏览当前页面的用户的主机名。DNS 反向解析不依赖于用户的 REMOTE_ADDR。
    $_SERVER['REMOTE_PORT'] 用户机器上连接到 Web 服务器所使用的端口号。
    $_SERVER['SCRIPT_FILENAME'] 当前执行脚本的绝对路径。
    $_SERVER['SERVER_ADMIN'] 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。(如:someone@runoob.com)
    $_SERVER['SERVER_PORT'] Web 服务器使用的端口。默认值为 "80"。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。
    $_SERVER['SERVER_SIGNATURE'] 包含了服务器版本和虚拟主机名的字符串。
    $_SERVER['PATH_TRANSLATED'] 当前脚本所在文件系统(非文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。
    $_SERVER['SCRIPT_NAME'] 包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 常量包含当前脚本(例如包含文件)的完整路径和文件名。
    $_SERVER['SCRIPT_URI'] URI 用来指定要访问的页面。例如 "/index.html"。

    (\_REQUEST及)_POST

    $_REQUEST 用于收集HTML表单提交的数据。
    PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"。
    以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。 当用户通过点击 "Submit" 按钮提交表单数据时, 表单数据将发送至

    标签中 action 属性中指定的脚本文件。 在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量 $_REQUEST 来收集表单中的 input 字段数据:

    <html>
    <body>
     
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
    Name: <input type="text" name="fname">
    <input type="submit">
    </form>
     
    <?php 
    $name = $_REQUEST['fname']; 
    echo $name; 
    ?>
     
    </body>
    </html>
    

    $_GET

    PHP (\_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。 )_GET 也可以收集URL中发送的数据。
    假定我们有一个包含参数的超链接HTML页面:

    <html>
    <body>
    
    <a href="test_get.php?subject=PHP&web=runoob.com">Test $GET</a>
    
    </body>
    </html>
    

    循环

    for

    <?php
    for ($i=1; $i<=5; $i++)
    {
        echo "The number is " . $i . "<br>";
    }
    ?>
    
    The number is 1
    The number is 2
    The number is 3
    The number is 4
    The number is 5 
    

    foreach

    <?php
    $x=array("one","two","three");
    foreach ($x as $value)
    {
        echo $value . "<br>";
    }
    ?>
    

    函数

    语法:

    <?php
    function functionName()
    {
        // 要执行的代码
    }
    ?>
    

    样例:

    <?php
    function add($x,$y)
    {
        $total=$x+$y;
        return $total;
    }
     
    echo "1 + 16 = " . add(1,16);
    ?>
    

    魔术常量

    __LINE__

    文件中的当前行号。

    <?php
    echo '这是第 " '  . \_\_LINE\_\_ . ' " 行';
    ?>
    

    __FILE__

    文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

    <?php
    echo '该文件位于 " '  . \_\_FILE\_\_ . ' " ';
    ?>
    

    __DIR__

    文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。

    <?php
    echo '该文件位于 " '  . \_\_DIR\_\_ . ' " ';
    ?>
    

    __FUNCTION__

    函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

    <?php
    function test() {
        echo  '函数名为:' . \_\_FUNCTION\_\_ ;
    }
    test();
    ?>
    

    __CLASS__

    类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。

    <?php
    class test {
        function _print() {
            echo '类名为:'  . \_\_CLASS\_\_ . "<br>";
            echo  '函数名为:' . \_\_FUNCTION\_\_ ;
        }
    }
    $t = new test();
    $t->_print();
    ?>
    

    __TRAIT__

    Trait 名包括其被声明的作用区域(例如 FooBar)。

    <?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();
    ?>
    

    __METHOD__

    类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

    <?php
    function test() {
        echo  '函数名为:' . \_\_METHOD\_\_ ;
    }
    test();
    ?>
    

    __NAMESPACE__

    当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

    <?php
    namespace MyProject;
     
    echo '命名空间为:"', \_\_NAMESPACE\_\_, '"'; // 输出 "MyProject"
    ?>
    

    命名空间

    命名空间必须是程序脚本的第一条语句.

    <?php  
    declare(encoding='UTF-8'); //定义多个命名空间和不包含在命名空间中的代码
    // 定义代码在 'MyProject' 命名空间中  
    namespace MyProject;  
     
    // ... 代码 ... 
    ?>
    
    
    
    <?php
    namespace MyProject {
        const CONNECT_OK = 1;
        class Connection { /* ... */ }
        function connect() { /* ... */  }
    }
    
    namespace AnotherProject {
        const CONNECT_OK = 1;
        class Connection { /* ... */ }
        function connect() { /* ... */  }
    }
    
    namespace { // 全局代码
    session_start();
    $a = MyProjectconnect();
    echo MyProjectConnection::start();
    }
    ?>
    

    在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前。

    <?php
    declare(encoding='UTF-8'); //定义多个命名空间和不包含在命名空间中的代码
    namespace MyProject {
    
    const CONNECT_OK = 1;
    class Connection { /* ... */ }
    function connect() { /* ... */  }
    }
    
    namespace { // 全局代码
    session_start();
    $a = MyProjectconnect();
    echo MyProjectConnection::start();
    }
    ?>
    

    以下代码会出现语法错误:

    <html>
    <?php
    namespace MyProject; // 命名空间前出现了“<html>” 会致命错误 - 命名空间必须是程序脚本的第一条语句
    ?>
    

    子命名空间及函数调用

    <?php
    namespace MyProjectSubLevel;  //声明分层次的单个命名空间
    use MyFullClassname as Another; //别名
    
    const CONNECT_OK = 1;
    class Connection { /* ... */ }
    function Connect() { /* ... */  }
    
    foo();     // 调用全局空间函数 "foo" 
    myfoo();   // 调用定义在命名空间"Amy"中函数 "foo" 
    
    ?>
    

    面向对象

    类的定义

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

    实例:

     <?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;
      }
    }
    
    $runoob = new Site;
    $taobao = new Site;
    $google = new Site;
    
    // 调用成员函数,设置标题和URL
    $runoob->setTitle( "菜鸟教程" );
    $taobao->setTitle( "淘宝" );
    $google->setTitle( "Google 搜索" );
    
    $runoob->setUrl( 'www.runoob.com' );
    $taobao->setUrl( 'www.taobao.com' );
    $google->setUrl( 'www.google.com' );
    
    // 调用成员函数,获取标题和URL
    $runoob->getTitle();
    $taobao->getTitle();
    $google->getTitle();
    
    $runoob->getUrl();
    $taobao->getUrl();
    $google->getUrl();
    ?> 
    

    构造函数

    function \_\_construct( $par1, $par2 ) {
       $this->url = $par1;
       $this->title = $par2;
    }
    

    析构函数

    void \_\_destruct ( void )
    

    继承

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

    重写

    访问控制

    public(公有),protected(受保护)或 private(私有)。

    接口

    接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。

    interface iTemplate
    {
        public function setVariable($name, $var);
        public function getHtml($template);
    }
    

    抽象类

    任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。

    abstract class AbstractClass
    {
     // 强制要求子类定义这些方法
        abstract protected function getValue();
        abstract protected function prefixValue($prefix);
    
        // 普通方法(非抽象方法)
        public function printOut() {
            print $this->getValue() . PHP_EOL;
        }
    }
    

    调用父类构造方法

    PHP 不会在子类的构造方法中自动的调用父类的构造方法。要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct() 。

    <?php
    class BaseClass {
       function __construct() {
           print "BaseClass 类中构造方法" . PHP_EOL;
       }
    }
    class SubClass extends BaseClass {
       function __construct() {
           parent::__construct();  // 子类构造方法不能自动调用父类的构造方法
           print "SubClass 类中构造方法" . PHP_EOL;
       }
    }
    class OtherSubClass extends BaseClass {
        // 继承 BaseClass 的构造方法
    }
    
    // 调用 BaseClass 构造方法
    $obj = new BaseClass();
    
    // 调用 BaseClass、SubClass 构造方法
    $obj = new SubClass();
    
    // 调用 BaseClass 构造方法
    $obj = new OtherSubClass();
    ?>
    
    BaseClass 类中构造方法
    BaseClass 类中构造方法
    SubClass 类中构造方法
    BaseClass 类中构造方法
    
  • 相关阅读:
    [程序员修炼之道]读书笔记
    protobufnet 简介
    提高IIS响应能力
    彻底解决性能问题,就因为一个配置
    2009年12月小记(Split,netstat,SortedList)
    如何在vmwarer中的linux安装lrzsz文件共享工具
    Liunx常用命令
    正则表达式 浅析
    java的final关键字
    JAVA正则表达式 Pattern和Matcher
  • 原文地址:https://www.cnblogs.com/chendeqiang/p/13173135.html
Copyright © 2011-2022 走看看