一、基本认识

  PHP是干什么的?百度百科上提到说:PHP就是一门脚本语言,开发用的,相信这个你们只要去搜一下,就会有一大堆关于PHP概念的解释。

  相信我们对PHP的初步认识是从浏览器开始的吧,当我们每打开浏览器去搜寻我们所需要的信息时,网站页面会显示出各种各样非常棒的效果,五颜六色的,静态效果和动态效果共存,十分漂亮。

  这时候我们需要思考一个问题,究竟是什么让网站显示的如此华丽呢?

二、PHP是世界上最好的语言

  在我上大学那会儿,记得C语言课上,老师说过一句话,任何变量要先定义,后使用。我嘴里抱怨着“为啥要先定义呢?想用就用呗,哪里这么多事儿!”。

  当时在课上说这话,就是文艺复兴时期的布鲁诺对天主教信仰进行挑战,会被烧死的。直到有次不经意间翻开一本神书,上面有段代码:

  它没有定义变量,直接拿变量进行计算,心想:厉害!原来老师说的也不全对嘛。

  它将变量随意使用,一会儿当作整型使用,一会儿当作字符串使用,心想:这代码要飞啊!浪!

  它甚至在变量数组中不存在索引时,也能使用,只是警告一下,程序依旧运行,结果正常输出,心想:神代码,再不学就晚了!

  随后,我激动地合上书,定眼一看封面,上面写着三个字母: PHP

  从那时候,脑海中就悄然印下这句话:php是世界上最好的语言。

三、PHP的一些小故事

  1、非诚勿扰相亲节目中,被灭灯的男子采访感言:我不知道为什么,说自己是做PHP,灯就全灭了。能够让女嘉宾灯全灭,这语言还不够好?黑人问号脸hhh

 

  2、如果您能让这个论坛炸开锅之PHP是世界上最好的语言,能够让男人放弃和妹子的约会,去论坛吵架,这语言还不够好?

某女:你能让这个论坛的人都吵起来,我今晚就跟你走.
某软件工程师:PHP是最好的语言!
某论坛炸锅了,各种吵架...
某女:服了你了,我们走吧 你想干啥都行.
某软件工程师:今天不行,我一定要说服他们,PHP必须是最好的语言
某女:.......

  3、曾经有一部高清的“艾薇偶像剧”风靡网络,很多热血少年流着口水,连夜下载,第一集播出,一个中年男子带有口音说出:PHP是一门XXX的语言。男孩子纸巾都准备好了,最后看了这个,也是迷茫。

能让热血少年在撸管之际放下情绪,学习CS知识,这语言还不够好?

四、PHP用途

  说了那么多小故事,看此文的你是不是对PHP产生了一点兴趣呢?我再向你们说明一下用途吧。

  PHP具有简单易懂的语法、没有奇怪的黑魔法、既能面向过程,又能面向对象、安装后各种扩展集一身、包括但不限于mysql、json、mbstr等,方便至极。一言不合,一个页面就html和PHP混写,甚至最新版本都内置了小型webserver,连apache和nginx都不用上、一分钟搭建博客论坛问你怕不怕、国外Ci、laravel、kohana、zf等框架层出不穷、国内tp社区棒、语言创建者积极上进优化、语言bug全世界的程序员和你一起修复。最重要的是大小公司都用、找工作不愁啊!

  PHP可能不是世界上最好的语言,但他一定是最适合新手学习编程的入门语言,也是进入Web开发领域的绝佳语言。如果对网络安全感兴趣的小伙伴们,一定要掌握好这门语言哦!

五、PHP语言开发技巧

  也许屏幕前的你目前可能对PHP语法不是很了解,我推荐你逛逛这个站点:PHP手册,这里面对PHP语法做了非常详尽的解释,很适合初学者及开发者做全面的参考。此文主要是为了分享博主在学习开发中的一点经验分享。

  以下内容大多数都是我在学习,工作中遇到的。我们一起来看~~

1、预定义常量

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 当前命名空间的名称

2、可变标识符

 //可变变量
$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();

3、双引号,单引号

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

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

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

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

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

4、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是空.

5、闭包

 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方法,对于一般的闭包上面那个例子应该够用了。

6、php指针

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

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

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

六、结束

  这里分享的都是在我工作学习中的问题,也是极有可能面试到的哦,如果有好的想法或者遇到什么问题的话我会继续分享的~~~(ง •_•)ง

【请您听我说】PHP语法特点的一些看法的更多相关文章

  1. 简体中国版文档的Markdown语法

    Markdown文件 注意︰这是简体中国版文档的Markdown语法.如果你正在寻找英语版文档.请参阅Markdown︰ Markdown: Syntax. Markdown: Syntax 概述 哲 ...

  2. Markdown语法说明(详解版)

    ####date: 2016-05-26 20:38:58 tags: Markdown tags && Syntax ##Markdown语法说明(详解版)杨帆发表于 2011-11 ...

  3. swift 2.2 语法 (下)

    前言: 1.此文中的语法会根据Swift的升级变动而更新. 2.如果需要请移步 -> swift2.2 语法(上).swift 2.2语法(中) 类的析构函数 swift会自动释放不需要的实例来 ...

  4. swift 2.2 语法 (中)

    前言: 1.此文中的语法会根据Swift的升级变动而更新. 2.如果需要请移步 -> swift2.2 语法(上).swift 2.2语法(下) 函数 和C语言一样,swift也有函数,性质和我 ...

  5. swift 2.2 语法 (上)

    前言: 1.此文中的语法会根据Swift的升级变动而更新. 2.如果需要请移步 -> swift2.2 语法(中).swift 2.2语法(下) Swift与OC中常见的区别 导入框架 OC: ...

  6. sql语法:inner join on, left join on, right join on具体用法

    inner join(等值连接) 仅仅返回两个表中联结字段相等的行 left join(左联接) 返回包含左表中的全部记录和右表中联结字段相等的记录 right join(右联接) 返回包含右表中的全 ...

  7. 关于XPath的基本语法

    关于XPath基础语法 关于XPath基础语法 更详细的请看: XPath语法 XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) ...

  8. Markdown对应Yelee主题语法

    概述 这里说的是Yelee主题的语法和原生语法是有些区别的:更多的基础语法可以到Cmd Markdown上面去查看:但是我觉得都会各有不同吧 注意这里说的不是真正意义上的Markdown语法 标题 一 ...

  9. SQL 常用语法记录

    SQL语法 注意:SQL 对大小写不敏感 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). 数据操作语言 (DML) SQL (结构化查询语言)是用于执行查询的语 ...

随机推荐

  1. 《程序员面试金典(第5版)》【PDF】下载

    <程序员面试金典(第5版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382252 内容简介 本书作者Gayle Laakma ...

  2. android中Log类的封装

    1.为了方便的使用Log打印日志,以及后续方便撤销日志打印,所以对Log类进行封装是一件好事. package market.phone; import android.util.Log; /** * ...

  3. 高性能管线式HTTP请求(实践·原理·实现)

      该篇实际是介绍pipe管线的原理,下面主要通过其高性能的测试实践,解析背后数据流量及原理.最后附带一个简单的实现     实践 先直接看对比测试方法 对于单一客户端对服务器进行http请求,一般我 ...

  4. 《跟我学IDEA》五、快捷键(编码利器)

    上一篇博文,我们学习了idea的一些模版配置,但是只有模版是不行的,一款编辑器如何能为我们灵活的使用,快捷键的功劳不用多说大家也明白.今天我们就来学习快捷键的配置以及一些常用的快捷键的介绍,为让家能更 ...

  5. 用node搭建简单的静态资源管理器

    我们都知道,老牌的3p服务器都是自带静态资源管理器的.但是node不同,它没有web容器,它的路由地址和真实地址可以没有联系,所有node的优点,是可以把路由做得相当漂亮. 但静态资源管理器也是必不可 ...

  6. Golang丰富的I/O----用N种Hello World展示

    h1 { margin-top: 0.6cm; margin-bottom: 0.58cm; direction: ltr; color: #000000; line-height: 200%; te ...

  7. Error in library(DESeq2) : 不存在叫‘DESeq2’这个名字的程辑包

    Error in read.dcf(file.path(pkgname, "DESCRIPTION"), c("Package", "Type&quo ...

  8. JQ trigger函数无法触发a标签的两种解决方法

    起因:点击icon图标后要触发a标签的链接转跳动作,但是用 JQ 的 $('#a').trigger('click') 居然不起作用,遂百度之,总结两种方法如下: (原因:JQ 的 trigger() ...

  9. C# System.Windows.Forms.NumericUpDown 控件全选其中文字

    num_length.Focus();                    UpDownBase updbText = (UpDownBase)num_length;                 ...

  10. extjs Proxy

    我们先来看看Extjs非常绚丽的Grid,其功能包括显示数据列表,修改.删除,分页,排序等功能.   Grid组件用来显示Store中的数据.Store可以看做是Model实例的集合.Grid仅关心如 ...