PHP学习和使用总结

原由

学习和使用PHP也有很多年头了,而本身也在学习和使用其余许多语言。我想经过这个总结来给本身一个交代。另外一方面也分享一下开发经验,如何用PHP开发和管理大型的项目。php

闲聊

许多人说本身1天学会PHP,头3天就写了个网站。的确PHP是个上手简单的语言,缘由在于:java

  1. 它不须要编译就能运行;这使得你的学习-实践成本很低;
  2. 它容错很高,使得你的程序老是能先运行,而不是一大堆报错。
  3. 它的不严谨,书写随意,你以为应该能够这样写,它就能这样写。

PHP最初的目的是为了作一个我的网站,很是快,很是简单。因此到了今天,PHP仍是包含了大量的早期为了简单起见保留的语法。好比,你不须要定义任何函数就能执行PHP,这一点和shell,perl是同样的;PHP在设计时没少参考服务器的脚本语言。node

PHP的简单也招来不少歧视,这些歧视不是没有道理,可是我想说的是,还好他们没有在写PHP了。一个项目是否严谨且符合工程标准,须要开发团队极强的自我约束能力,不然就算是用严谨而简洁著称Python,也能写出很烂的项目代码。linux

PHP发展至今,已经包含了命名空间,类,方法,函数,反射,异常处理,协程,异步IO等等复杂的实现;这使得PHP可以像好比JAVA同样应对大型web项目。而PHP 7编译完成的脚本执行速度已经快要达到HHVM的速度了。nginx

公平的说,PHP还有不少短板(2017年1月10日),好比多线程和异步编程依旧很不成熟。缺少权威的包管理体系,以致于社区贡献的公共库很少,好比和java比是少的多,为了兼顾性能,许多扩展包都是用C语言写的,使得扩展的开发成本不低,安装也复杂。那一样是脚本语言的Python,怎么没有干掉PHP呢?一个是历史缘由,不少项目已是PHP了。一个是Python在从2.* 跨域到 3.*的尴尬状况。虽然Python已经有超越PHP的占有率,可是国内Web开发领域,用Python的貌似很少。包括我本身用Python仍是在服务器管理、数据统计等方面,少有用于网站开发。我的感受Python开发网站仍是不如PHP来得方便。web


正文

这份总结也能够当作一份教程使用。可是起码须要C语言的程序基础,由于不会包含如何使用条件语句或者循环体这样的东西。大概是下面3个内容。shell

目录

  1. 入门
  2. 语法
  3. web服务器
  4. 简洁严谨的使用PHP
    • 项目、框架
    • 规范
    • 技巧




1. 入门

这里假设你有过任意一种编程语言的经验了。macos

1.1 怎么运行PHP

若是你对Linux 或 Unix(MacOS好比)熟悉,那么恭喜你,运行PHP的方法和shell脚本彻底相同:
首先你建立一个文本文件,里面随便写个字符串,好比"Hello world",注意,随便写就是其字面意思,不要关心语法什么的。就像用记事本写个文本文件那样。编程

而后vim

$ php index.php

或者在脚本顶部加上 #!/usr/bin/env php ,而后

$ chmod +x index.php
$ ./index.php

就能够看到输出了Hello world。

那么问题来了,windows下如何运行PHP,linux 或 MacOS下,PHP从哪来?总得安装吧。

1.2 安装

1.2.1 windows:

Windows 下PHP安装就是一个复制粘贴的过程,在php.net的官网上找到Windows的版本,下载,解压以后,获得的目录中的 bin/php.exe 就是php了。在cmd命令行下执行

/path/to/php/bin/php.exe index.php

能够运行刚才的脚本。

1.2.2 Linux 使用包管理安装:

redhat 或 Centos下用yum install php 可能遇到php版本不是最新的问题。因此这里强烈建议用源码安装最新稳定版本。
若是你正在使用MacOS,PHP默认是有安装的,版本通常还凑合,特别是有常常升级系统,应该仍是挺新的,若是要安装其余版本,那么可使用brew install来安装PHP。brew 工具可本身Google一下。

1.2.3 Linux、MacOS 编译安装:

MacOS的gcc编译器是XCode提供的,因此编译以前,你得先安装XCode。其余linux环境只要不是太旧,应该没有问题。能够在官网查看编译要求。

# 在MacOS下面你可能遇到大量的头文件不存在的问题。安装完xcode后,还须要执行下面指令,即便这样,还可能继续遇到/usr下权限问题。。。请多多google
xcode-select --install

而后到官网下载稳定版本的php安装包,好比如今是PHP 5.6.* 或者 PHP 7。你可能好奇PHP 6呢,流产了,听说是社区贡献的代码质量问题和管理问题致使。

下载好的代码包安装过程和其余Linux下源码安装方式同样:

# 解压并安装
tar zxf php.*.tar.gz
cd php.*
./configure 
make && make install

新版MacOS可能遇到/usr/include文件夹不存在,可Google解决。不过你能够考虑使用系统自带的PHP。

如何验证安装?执行指令 php -v 可看到php的版本信息。若是有,就是安装成了。

1.2.4 选择IDE

早期咱们学习PHP的同窗都喜欢文本编辑器,好比nodepad++,vim。。。不过如今有更好的选择。喜欢本身捣腾的仍是能够选择VIM或者Sublime也不错。若是要一个完整的、现成的IDE,最好的是PHPStorm,可是这个要钱,不过盗版横行。。。若是用其余IDE,我以为还不如用Sublime,顺便还多学个Python,并且不强制收费。

1.2.4 如何使用IDE运行PHP脚本?

待补充




2 语法

2.1 先学习例子

刚才说在文本文件index.php中随便写一个字符串,不要考虑语法,就这一点来,PHP比shell上手都简单,由于在shell中这么干,得报错(Hello: command not found)。我能够这么作缘由是,若是要执行一段PHP代码,须要用<?php [代码内容] ?> 将代码包裹起来,好比下面这样:

<?php
//PHP每一个完整表达式,函数调用,都应该以;结尾,可是表达式,或者函数调用中间能够换行
echo "Hello world";
?>

而其余部分,PHP会跳过直接输出。若是你熟悉JSP 或者 ASP,这是同样的,在JSP中你能够用<% [java 代码] %>。而上面的代码还有一种更加简洁的书写方式:

这是一种输出内容的时候的一种简写方式,省略了echo 语法和 php 关键字,还有一个分号也不写了。
<?="Hello world"?>

这里你可能好奇,php没有函数吗?通常语言执行的不该该起码是个函数吗?好比C语言的print("Hello World")?echo确实不是函数,是一个语法,就像C语言中声明一个变量:

//这里也没有括号,int也不是函数
int age;

因此echo不具有做为函数的一些特质,可是多了一些语法的功能,好比输出多个值能够

<?php
echo "hello","world";

//若是一个php文件所有是php代码,结尾的?>不要写,目前先记着就行,为啥不写能够Google一下。

2.2 变量、函数、类

2.2.1 变量

任何一个PHP变量都是以$开头,这个没有例外,变量名包含字母数字下划线和“unicode字符(这个玩玩就好,不要用它)”,和C同样,不能数字开头,区分大小写。

<?php
//php定义变量不须要事先声明

$name = "kevin";//字符串
$age = 30;//整数

$name = $age;//弱类型使得你能够这样赋值,可是就像开头说的,你要这么作,PHP不会拒绝,可是你的代码就容易出问题,并且不严谨了

$句子 = $name . " is a man.";//php支持unicode,不过也别这么干,英文命名是最好的选择,拼音都不要用。

echo $句子;
//获得输出:30 is a man.
//这里你能够看到 英文句号 能够链接2个字符串,可是这样也致使了对象不能用.操做了,这也是个历史遗留问题,PHP一开始压根就没考虑过会有对象这回事。

2.2.2 函数

<?php
/**
  * 直接来例子最容易理解
  */
function add($a,$b = 1) {
    return $a + $b;
}

echo add(1,2);
//获得输出:3

上面定义了一个函数add,用于两个数相加,第二个数默认是1,这样若是add($a) 就至关于 $a + 1或者$a++;的功能。PHP函数没有定义返回值,并且要求function开头,由于PHP是弱类型的,返回值是什么类型,它并不关心。调用的人去理解就好了。自从有了面向对象后,函数就再也不提倡使用了,因此函数应该多用于及其简单的场景,或者练习中。

2.2.3 类

class Math {
    function add($a,$b = 1) {
        return $a + $b;
    }
}

$m = new Math();
echo $m->add(1,2);
//获得输出3

上面定义了一个Math类,包含一个add的公有方法,php的类和java同样,有抽象类,接口,私有方法,保护方法等等,可是先不介绍了(省得1天学不完)。

这里看到,用new 关键字实例化了类,这个各类语言基本同样。用了->符号来调用对象的方法,这问题前面说了,由于句号被占用了,C语言中指向结构体的指针也是用->这个符号来引用成员数据,PHP使用它也算是可以接受。

2.2.4 恭喜你完成了PHP入门

若是你想用PHP写点东西,只须要再有一个函数手册就行了。可是你还有不少疑问,好比怎么把东西递交给用户的浏览器?




3 Web服务器

PHP最大的用处就是作网站,在终端里面加加减减,输出点东西,每每是练习或者单元测试,关于PHP单元测试,后面也会介绍。

PHP 最多见的使用组合是和Apache一块儿,若是你在用MacOS,只要启用我的站点的功能,就是一个完美的PHP + APACHE的服务器环境了。而其余使用Linux和windows的人可能就要麻烦一些,要本身编译和配置。为了简单起见,这里用php-fpm的方式来运行php,而须要的web服务器是:Nginx。

Nginx 安装

待续

相关文章
相关标签/搜索