美文网首页PHP实战我爱编程
PHP语法特点和技巧浅析

PHP语法特点和技巧浅析

作者: michaelgbw | 来源:发表于2016-08-22 00:18 被阅读518次

文/michaelgbw

php的开发者在程序开发界一直占有着一席之地,我也是这样的一个phper,我们今天并不是要说php是什么,我想这大家baidu,google一下,比我讲的清楚,这是肯定的。

在面试中,php的语法因为简单易懂,所以有时并不做为考察点出现,还有,目前就中国整个的php开发环境来说,thinkphp,yii,lavarel等框架已经是标配。我没事就会问自己,离开框架我们还会开发吗,或者说还能正确的开发吗,有时我们也会用php在cli的模式下运行,run个什么crontab什么的,这个可是没有框架给我们用呀。

所以 我们今天不说框架,不说原理(能力也有限),我们来说说原生的技巧。以下内容大多数都是我在学习,工作中遇到的。我们一起来看~

预定义常量

PATH_SEPARATOR //路径分隔符(Windows为分号,类Unix为冒号)
DIRECTORY_SEPARATOR //目录分隔符
PHP_EOL //当前系统的换行符
PHP_VERSION //PHP版本号
PHP_OS //PHP服务操作系统
PHP_SAPI //用来判断是使用命令行还是浏览器执行的,如果 PHP_SAPI=='cli' 表示是在命令行下执行
PHP_INT_MAX INT最大值,32位平台时值为2147483647
PHP_INT_SIZE INT字长,32位平台时值为4(4字节)
M_PI //圆周率值
M_E //自然数
FILE 所在文件的绝对路径
LINE 文件中的当前行号
DIR 文件所在目录
FUNCTION 函数名称
CLASS 类的名称
METHOD 类的方法名
NAMESPACE 当前命名空间的名称

可变标识符
//可变变量 
$i = 3;
$k = 'i';
echo $$k; //输出3
//可变函数
function func(){
    echo 'hello!';
}
 $i = 'func';
 $i(); //输出hello
//可变类名 
class CLS{
  public $k = 'hello';
} 
$i = 'CLS'; 
$j = new $i;
echo $j->k;
//可变属性 
  class CLS{  
      public $k = 'hello';
    } 
$i = 'k';
$j = new CLS;
echo $j->$i;
.//可变方法
class CLS{
public function k(){
echo 'hello';
}
}
 $i='k';
 $j=new CLS;
 $j->$i();
双引号,单引号

php中,单引号和双音号都可以定义一段字符串,但区别是双引号会默认在解析中进行处理。而单引号不会。

$user='gbw';
$sql="select * from user as u where u.name='$user'";

这个语句是正确解析出$user的。但单引号就不行了。但单引号直接display到view中去会更好,因为少了层解析,更快。
还有php的特定写法

$str = <<<EOT
  字符串内容
EOT;

就是三个<和一个名字将一大段字符包裹起来,这个方法是不需要“”的,一般用在中间大量引用html时。

empty(),isset(),==null,==0问题

为什么我会抛出这个问题呢,因为我曾经被他坑过,呜呜呜~

$string="php vs java,but we do not care result about this";
    $str="php";
    if(strpos($string,$str)){
        echo 'find';
    }
    else{
        echo 'no';
    }
//no

这个例子大家在php开发中会不会遇到呢,strpos()返回字符串中特定字符的位置,明显是0,好,php是弱类型语言,0和null一样,自然是no,对于这个问题,建议用strstr判断。
这只是个引子,

$str=0;
    if(!isset($str)){
        echo 'empty';
    }
    else{
        echo 'no';
    }//no
    if(empty($str)){
        echo 'empty';
    }
    else{
        echo 'no';
    }//empty
      if($str===null){
        echo 'empty';
    }
    else{
        echo 'no';
    }//no
        if($str==null){
        echo 'empty';
    }
    else{
        echo 'no';
    }//empty

这里大家应该都明白了的吧,null 即是empty(),0即是null,但0并不是===null,即0还是int,null是空.

闭包
function closureCreater() {
  $x = 1;
  return function($fun = null) use(&$x) {//按引用传值
    echo "<br />" . $x++;
    $fun and $fun();
  };
}
 
$x = "hello world";
$test = closureCreater();
$test();
$test(function(){ echo "closure test one"; });
$test(function(){ echo "closure test two"; });
$test(
    function() use($x)
        { echo "<br />".$x;
    });
结果

大家不知道除了js,php中还有闭包吧,但这里的php的闭包就没有js那般优雅了,要引用还要使用use方法,对于一般的闭包上面那个例子应该够用了。

php指针

大家会不会很疑惑,除了C,还有别的小兄弟有指针?

current/pos 返回当前被内部指针指向的数组单元的值,并不移动指针。
key 返回数组中当前单元的键名,并不移动指针
next 将数组中的内部指针向前移动一位,并返回移动后当前单元的值。先移动,再取值。
prev 将数组的内部指针倒回一位,并返回移动后当前单元的值先移动,再取值。
end 将数组的内部指针指向最后一个单元,并返回最后一个单元的值
reset 将数组的内部指针指向第一个单元,并返回第一个数组单元的值

这可是很有用的,当我们不知道一个数组的第一个元素下标是什么鬼时,current()的出现避免了我们的尴尬.

结束语

这里分享的都是在我工作学习中的问题,也是极有可能面试到的哦,这个是(一),我会在后面的工作学习中碰到问题及时分享的~

相关文章

  • PHP语法特点和技巧浅析

    文/michaelgbw php的开发者在程序开发界一直占有着一席之地,我也是这样的一个phper,我们今天并不是...

  • 华莱黑茶黑盘红盘双轨系统软件

    PHP双轨系统软件   PHP程序语法吸收了C语言、Java和Perl的特点,使用广泛。   1、快捷性   采用...

  • PHP与JAVA语言优劣性对比

    一、语言比较 PHP是解释执行的服务器脚本语言,首先php有简单容易上手的特点。语法和c语言比较象,所以学过c语言...

  • PHP学习随笔.1

    PHP的语法 php的语法是结尾的 PHP的标记风格 PHP和其他的Web的语言一样,都是使用...

  • Laravel入门(安装部署篇)

    引言 Laravel是一套简洁、优雅的PHP Web开发框架。它是目前最流行的PHP框架。它有以下特点: 语法更富...

  • PHP中语法技巧

    1.echo 的逗号和点号:echo 是php的语言结构,不是函数,输入多个变量的时候用“,”。不需要占用更多的内...

  • 一. PHP入门篇和PHP进阶篇

    PHP基础语法 PHP数组 PHP函数 PHP之类和对象 PHP字符串 PHP之正则表达式 PHP之cookie ...

  • 6.Python简介与语法常识

    Python简介与语法常识 本文章将简单介绍Python的发展历史和语言特点、语法常识。熟知这些语法常识、语法特点...

  • 24条货真价实的PHP代码优化技巧

    PHP是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适...

  • PHP入门基础语法

    PHP(“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛...

网友评论

    本文标题:PHP语法特点和技巧浅析

    本文链接:https://www.haomeiwen.com/subject/zmuwsttx.html