PHP备忘

1. 单引号,双引号

当双引号中包含变量时,变量会与双引号中的内容连接在一起;
当单引号中包含变量时,变量会被当做字符串输出。

<?php 
    $world= "world"; 
    $str1 = "Hello, $world";  //Hello, world
    $str2 = 'Hello, $world';  //Hello, $world
    echo $str1;
    echo "<br />";
    echo $str2;
?>

2. 常量如何取值

获取常量值的有两种方法取值。
第一种是使用常量名直接获取值;例如计算圆周率的面积,如下:

<?php
    define("PI",3.14);
    $r=1;
    $area = PI*$r*$r; //计算圆的面积
?>

第二种是使用constant()函数。它和直接使用常量名输出的效果是一样的,但函数可以动态的输出不同的常量,在使用上要灵活、方便,其语法格式如下:

    mixed constant(string constant_name)

第一个参数constant_name为要获取常量的名称,也可为存储常量名的变量。如果成功则返回常量的值,失败则提示错误信息常量没有被定义。(注:mixed表示函数返回值类型为多种不同的类型,string表示参数类型为字符串类型)

<?php 
    $p="";
    //定义圆周率的两种取值
    define("PI1",3.14);
    define("PI2",3.142);
    //定义值的精度
    $height = "中";
    //根据精度返回常量名,将常量变成了一个可变的常量
    if($height == "中"){
        $p = "PI1";
    }else if($height == "低"){
        $p = "PI2";
    }
    $r=1;
    $area = constant($p)*$r*$r;
    echo $area;
?>

3. PHP引用(&)

在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针:例如你不能对他们做指针运算,他们并不是实际的内存地址。

详细文章:PHP引用(&)使用详解PHP手册


4. 魔术变量

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

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

__FILE__        //返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。

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

__LINE__        //返回文件中的当前行号。

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

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

__STATIC__      //当你调用class的静态方法时,返回class名称,区分大小写。如果在继承中调用的话,不管在继承中有没有定义,都能返回继承的class名。

5. 魔术函数

  __construct()   //实例化对象时被调用,当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。

  __destruct()    //当删除一个对象或对象操作终止时被调用。

  __call()      //对象调用某个方法,若方法存在,则直接调用;若不存在,则会去调用__call函数。

  __get()        //读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用__get函数。

  __set()        //设置一个对象的属性时,若属性存在,则直接赋值;若不存在,则会调用__set函数。

  __toString()    //打印一个对象的时被调用。如echo $obj;或print $obj;

  __clone()       //克隆对象时被调用。如:$t=new Test();$t1=clone $t;

  __sleep()       //serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。

  __wakeup()       //unserialize时被调用,做些对象的初始化工作。

  __isset()       //检测一个对象的属性是否存在时被调用。如:isset($c->name)。

  __unset()      //unset一个对象的属性时被调用。如:unset($c->name)。

  __set_state()   //调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。

  __autoload()    //实例化一个对象时,如果对应的类不存在,则该方法被调用。

6. Session和Cookie的区别

PHP中cookie和session的区别实例分析


7. Apache和Nginx的区别

Nginx 和 Apache 各有什么优缺点
Nginx实践一:centos apache更换为nginx


8. PHP命名空间

详细文章:PHP命名空间命名空间概述


9. fastcgi与php-fpm的关系

详细文章:搞不清FastCgi与PHP-fpm之间是个什么样的关系什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?


10. 类的静态属性、静态方法

静态属性静态方法
a)不需要实例化能够使用
b)访问方式在静态属性和方法的名称前加上操作符”self::”“self::”、实例化后”->”
c)可以通过“->”操作符访问

a)静态属性和静态方法不需要在类被实例化的情况下可以直接使用,不是静态的则一定得实例化类;
b)可以通过在该静态属性和方法的名称前加上操作符”self::”,实现在同一类的成员方法中访问静态属性和方法;
c)静态属性不可以由实例化的对象通过 -> 操作符来访问(但静态方法可以);
d)静态在读到这个类或者引入这个类文件的时候,就已经实例化并存放到内存中了,非静态类则需要new一下。

详细文章:类和对象:静态属性、静态方法Static(静态)关键字


11. 类方法里->和::的区别

->::
a)需要实例化才能使用
b)能访问静态属性
b)能访问静态方法是(需要实例化)

详细文章:PHP中调用类方法时->和::的区别是什么?


12. self、this的区别

selfthis
能在静态函数里使用
可访问的类变量和方法由self::$this-> (注意:PHP > 5.3 允许由 $this 使用静态变量,用 $this::$foo$this->foo 将仍然没有被定义,如果 $foo 是一个静态变量.)
需要一个实例对象

详细文章:PHP中self和this的用法区别


13. require、require_once和include、include_once的区别

require 的使用方法如 require(“file.php”); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
include 使用方法如 include(“file.php”); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。
require_once()语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。
include_once()语句在脚本执行期间包括并运行指定文件。此行为和 include() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。如同此语句名字暗示的那样,只会包括一次。

详细文章:require(),include(),require_once()和include_once()之间的区别


14. Linux如何输出文件最后10行,PHP如何输出文件最后10行

Linux下,输出前十行可以用 head -10 文件名,输出后十行可以用 tail -10 文件名

// Linux:
[root@localhost sendmail]# tail -n 10 sendmail.html
                            <br>
                            <a href="#">4</a>
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
</body>
</html>


// PHP代码:
exec("tail -n 10 sendmail.html", $output);
echo "<pre>";
var_dump($output);

// 执行PHP代码
[root@localhost sendmail]# /usr/bin/php do_queue.php
<pre>array(10) {
  [0]=>
  string(32) "                            <br>"
  [1]=>
  string(45) "                            <a href="#">4</a>"
  [2]=>
  string(29) "                        </td>"
  [3]=>
  string(25) "                    </tr>"
  [4]=>
  string(24) "                </table>"
  [5]=>
  string(17) "            </td>"
  [6]=>
  string(13) "        </tr>"
  [7]=>
  string(12) "    </table>"
  [8]=>
  string(7) "</body>"
  [9]=>
  string(7) "</html>"
}

15. 备忘函数

1)file_put_contents — 将一个字符串写入文件

$file  = 'log.php';//要写入文件的文件名(可以是任意文件名),如果文件不存在,将会创建一个
$content = "第一次写入的内容\n";
if($f  = file_put_contents($file, $content,FILE_APPEND)){  // 这个函数支持版本(PHP 5)
    echo "写入成功。<br />";
}

2)mb_strlen — 获取字符串的长度(多字节的字符被计为 1)

//strlen会把每个中文计数为3,因为每个中文占3个字节

echo strlen("你好,世界!");  //输出18
echo mb_strlen("你好,世界!");  //输出6

3)mb_substr — 获取字符串的部分

// string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )
// str: 从该 string 中提取子字符串。
// start: str 中要使用的第一个字符的位置。
// length: str 中要使用的最大字符数。 If omitted or NULL is passed, extract all characters to the end of the string.
// encoding: encoding 参数为字符编码。如果省略,则使用内部字符编码。

echo mb_substr("你好,世界!", 0, 4); //输出“你好,世”
echo substr("你好,世界!", 0 ,4);    //你�

4)round — 获取字符串的部分

echo round(3.4);         // 3
echo round(3.5);         // 4
echo round(3.6);         // 4
echo round(3.6, 0);      // 4
echo round(1.95583, 2);  // 1.96
echo round(1241757, -3); // 1242000
echo round(5.045, 2);    // 5.05
echo round(5.055, 2);    // 5.06

5)number_format — 获取字符串的部分

echo number_format(123456, 2, '.', '');     // 123456.00
echo number_format(123456, 2, '.', ',');    // 123,456.00
echo number_format(123456, 2, ',', ' ');    // 123 456,00
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值