PHP in action (基础篇)

2015-03-18 wcdj


摘要:PHP可以做什么,以及基本语法。


0 PHP是干啥的

为什么要学习PHP?“我可以用JavaScript来实现程序编写。”但JavaScript的能力是有限的,JavaScript通常运行在浏览器(客户端),它可以制作网页上面的特效:鼠标滑过背景改变颜色,还有网页上常见的鼠标滑过弹出菜单。但如果要让JavaScript实现显示“访问网站的总人数”,它就无能为力了,因为它只能获得客户端的信息,而“访问网站的总人数”是存储在服务器端的。所以就需要另外一种可以在服务器端运行的编程语言,PHP语言就是其中的一种,因为它可以运行在Web服务器端。

在学习PHP之前让我们来认识一下PHP及其功能。

1、运行在服务器端:学会了PHP,就可以指挥服务器给你干活,甚至是搞破坏^_^(千万不能真这么做咯),WEB网站的大部分数据都是存储在服务器端的,PHP就是用来处理这些存储在服务器的数据的(功能强大吧)。

2、跨平台:服务器可以是多种平台的服务器,比如Linux、Windows、Unix,你都可以指挥(不用怕只能指挥一种服务器啦吧)。

3、脚本语言:它是通过编写脚本,也就是一行行的计算机指令(也可以理解为特定的英文单词),来指挥服务器来工作的,因此,在编写PHP的过程其实就是与老外(服务器成老外啦)交流的过程,交流的语言就是PHP。

4、免费:免费使用(天下还真有免费的午餐)。

<!DOCTYPE html>
<html>
    <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>欢迎学习php!</title>
    </head>
	<body>
       <p>
       <?php 
        // this is a comment
        echo 'php learning, gerry';
        echo 1024*4;
       ?></p>
       
	</body>
</html>


不同于HTML和CSS,在php中我们可以做计算,比如我们写入echo 12*3计算机会计算出结果36。如下代码:

<?php echo 12*3;?>

一个字符串是用双引号括起来的一个词或一个句字,比如:“Hi,imooc!”。你可以用PHP语言输出把这个字符串输出,像这样:

<?php echo "Hi,imooc";?>

也可以用单引号括起来,就像下面代码:

<?php echo 'Hi,imooc';?>

可以把两个字符用连接符连接起来,像这样:

<?php echo 'Hi,'.'imooc';?>

注意: 连接符可以连接多个字符串,上面的例子就是把一个字符串拆分为二个小字符串,然后用一个连接符连起来。

在php中字符串连接符是用点(.)来表示的,这一点比较特殊,其它语言中是用加号(+)来表示的,比如:JavaScirpt、C。


在PHP中也有注释语句:用双斜杠(//)来表示。其它语言中,Html中使用<!--注释语句-->,CSS中使用/*注释语句*/。如下面代码:

<?php
//输出hi,imooc
echo "hi,imooc";
?>

注释语句可以在PHP程序的任意位置(但注释语句一定要写在<?php ?>之间)。

注意:这个注释语句是为程序员准备的。


1 变量的用法

<?php
    $var = "hello";
    echo $var;
	echo "<br />";
	$var = "world";
	echo $var;
?>
在PHP中变量名是区分大小写的,var_dump函数可以将变量的数据类型显示出来。

<?php 
$var_name = "apple";
$n = 10;
var_dump($var_name);
var_dump($n);
?>
在变量中,由于变量占用的空间单元不一样(占的地盘大小不一样),也分成几种数据类型,就像超市商品的包装袋,有几种不同类型,不同的商品使用不同的包装袋。我们可以通过使用“memory_get_usage”获取当前PHP消耗的内存。

<?php 
echo $m1 = memory_get_usage(); 
echo "<br />";
$var_string = "123";
echo $m2 = memory_get_usage()-$m1; 
echo "<br />";
$n = 123;
echo $m3 = memory_get_usage()-$m1-$m2; 
echo "<br />";
$f = 123.00;
echo $m4 = memory_get_usage()-$m1-$m2-$m3; 
echo "<br />";
$var_array = array("123");
echo $m5 = memory_get_usage()-$m1-$m2-$m3-$m4; 
?>
分别定义四种不同的数据类型,分别是字符串类型,整型,浮点型和数组。初始化消耗了624056,字符串消耗328,整型和浮点型都是288,数组消耗632。

注意:根据操作系统、PHP版本以及PHP的运行方式可能输出结果会不同。


在PHP中,支持8种原始类型,其中包括四种标量类型、两种复合类型和两种特殊类型。PHP是一门松散类型的语言,不必向PHP声明变量的数据类型,PHP会自动把变量转换为自动的数据类型,一定程度降低了学习PHP的门槛。如果接触过C语言或者JAVA语言,就会发现在声明变量的时候需要声明变量的数据类型。

<?php 
 $string = "就是就是";
 var_dump($string);
 echo "<br />";   // string(12) "就是就是"
 $string = 9494;
 var_dump($string);// int(9494)
 echo "<br />";
?>


布尔类型(boolean):只有两个值,一个是TRUE,另一个FALSE,可以理解为是或否。它不区分大小写,也就是说”TRUE”和“true”效果是一样的。主要用在条件结构(条件结构在后面部分会介绍)中,例如判断是否满足条件的时候,是用“true”表示满足,用“false”表示不满足。需要注意的是,当我们用”echo”指令输出布尔类型时,如果是“true”则输出的是“1”,“false”则什么也不输出。我们可以使用“var_dump”函数,获取它真正的数据类型。

<?php 
    $man = "男";
	$flag = $man == "男";
	echo $flag ;// 1
	echo "<br />" ;
	var_dump($flag);// bool(true)
?>

整型(integer):类似于常见的整数。它可以用十进制、八进制、十六进制指定。十进制就是日常使用的数字;八进制,数字前必须加上“0”(这个0是阿拉伯数字0,可不是英文字母“欧”哦);十六进制,数字前必须加“0x” (这个0也是阿拉伯数字0,不是“欧”哦)。

<?php
$data_int1 = 123;// 十进制
echo $data_int1;
echo "<br />";
$data_int2 = -123;// 负数
echo $data_int2;
echo "<br />";
$data_int3 = 011;// 八进制
echo $data_int3;
echo "<br />";
$data_int4 = 0x11;// 十六进制
echo $data_int4;
echo "<br />";
?>

浮点型(浮点数、双精度数或实数),也就是通常说的小数,可以用小数点或者科学计数法表示。科学计数法可以使用小写的e,也可以使用大写的E。

<?php
$num_float1 = 1.234;// 小数点
echo $num_float1;
echo "<br />";
$num_float2 = 1.2e3;// 科学计数法,小写e
echo $num_float2;
echo "<br />";
$num_float3 = 7.0E-2;// 科学计数法,大写E
echo $num_float3;
echo "<br />";
?>

字符串是由一系列字符组成,在PHP中,字符和字节一样,也就是说,一共有256种不同字符的可能性。

字符串型可以用三种方法定义:单引号形式双引号形式Heredoc结构形式

<?php 
$str_string1 = '我是字符串';// 单引号
$str_string2 = "我也是字符串哦";// 双引号
echo $str_string1;
echo "<br />";
echo $str_string2;
?>
当你的字符串中包含引号的时候,我们怎么办?

<?php 
$str_string1 = '甲问:“你在哪里学的PHP?”';
$str_string2 = "乙毫不犹豫地回答:'就不告诉你!'";
$str_string3 = '甲:\'无语\'';
$str_string4 = "乙:\"呵呵\"";
echo $str_string1;
echo "<br />";
echo $str_string2;
echo "<br />";
echo $str_string3;
echo "<br />";
echo $str_string4;
echo "<br />";
?>

当双引号中包含变量时,变量会与双引号中的内容连接在一起;

当单引号中包含变量时,变量会被当做字符串输出。

<?php 
$love = "I love you!"; 
$string1 = "hi $love";// hi I love you!
$string2 = 'hi $love';// hi $love
echo $string1;
echo "<br />";
echo $string2;
?>

当我的字符串很长怎么办?

我们可以使用 Heredoc结构形式的方法来解决该问题,首先使用定界符表示字符串(<<<),接着在“<<<“之后提供一个标识符 GOD,然后是字符串,最后以提供的这个标识符结束字符串。
<?php 
$string1 = <<< gerry
我有一只小毛驴,我从来也不骑。
有一天我心血来潮,骑着去赶集。
我手里拿着小皮鞭,我心里正得意。
不知怎么哗啦啦啦啦,我摔了一身泥.
gerry;

echo $string1;
?>

NULL(NULL):NULL是空类型,对大小写不敏感,NULL类型只有一个取值,表示一个变量没有值,当被赋值为NULL,或者尚未被赋值,或者被unset(),这三种情况下变量被认为为NULL。

<?php 
 error_reporting(0); //禁止显示PHP警告提示
 $var;
 var_dump($var);
 $var1 = null;
 var_dump($var1);
 $var2 = NULL;
 var_dump( $var2);
 $var3 = "节日快乐!";
 unset($var3);
 var_dump($var3);
?>

2 什么是常量

什么是常量?常量可以理解为值不变的量(如圆周率);或者是常量值被定义后,在脚本的其他任何地方都不可以被改变。PHP中的常量分为自定义常量和系统常量。自定义常量是根据我们开发的需要,而定义的常量,它通过使用PHP中的函数define()定义。

define()函数的语法格式为:

bool define(string $constant_name, mixed $value[, $case_sensitive = true])

它有3个参数:

第一个参数“constant_name”为必选参数,常量名称,即标志符,常量的命名规则与变量的一致。第二个参数“value”为必选参数,它是常量的值。第三个参数“case_sensitive”为可选参数,指定是否大小写敏感,设定为true表示不敏感,一般不指定第三个参数的情况下,默认第三个参数的值为false。

注: string表示参数类型为字符串类型,mixed表示参数类型可以接受为多种不同的类型,case_sensitive = true表示默认为布尔类型TRUE。

<?php
define("PI", 3.14);
echo PI;
echo "<br />";
$p = "PII";
define($p, 3.1415);
echo PII;
?>

<?php
define("PI", 3.14);
$r=3;
echo "面积为:".(PI*$r*$r)."<br />";
echo "周长为:".(2*PI*$r)."<br />";
?>


系统常量是PHP已经定义好的常量,我们可以直接拿来使用,常见的系统常量有:

(1)__FILE__ :php程序文件名。它可以帮助我们获取当前文件在服务器的物理位置。

(2)__LINE__ :PHP程序文件行数。它可以告诉我们,当前代码在第几行。

(3)PHP_VERSION:当前解析器的版本号。它可以告诉我们当前PHP解析器的版本号,我们可以提前知道我们的PHP代码是否可被该PHP解析器解析。

(4)PHP_OS:执行当前PHP版本的操作系统名称。它可以告诉我们服务器所用的操作系统名称,我们可以根据该操作系统优化我们的代码。

<?php
echo __FILE__;
echo "<br />";
echo __LINE__;
echo "<br />";
echo PHP_VERSION;
echo "<br />";
echo PHP_OS;
echo "<br />";
?>

定义了常量,那么就要使用常量,那么如何获取常量值呢?

获取常量值的有两种方法取值:

第一种是使用常量名直接获取值。

第二种是使用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.14
?>

如果常量被重复定义以后,PHP解析器会发出“Constant XXX already defined”的警告,提醒我们该常量已经被定义过。那么,在团队开发,或代码量很大的情况下,我们如何去判定一个常量是否被定义呢?

defined()函数可以帮助我们判断一个常量是否已经定义,其语法格式为:

bool defined(string constants_name)

它只有参数constant_name,指的是要获取常量的名称,若存在则返回布尔类型true,否则返回布尔类型false; (注:bool表示函数返回值类型为布尔类型)

<?php 
define("PI1",3.14);
$p = "PI1";
$is1 = defined($p);
$is2 = defined("PI2");
var_dump($is1);// bool(true)
var_dump($is2);// bool(false)
?>





容祥略:4 (覆盖了PHP的OO应用的问题。) -- 实用性: 5 (例子丰富,并具有相当强的实用性。) -- 重要性: 4 (对中级人员学习OOP有比较大的参考性。) -- 独创性: 5 (把OO原理贯穿到PHP的各个应用领域, 有比较强的独创性。) -- 写作风格:4 (比较正统的写作方式,对英文要求比较高。但由于丰富事例讲解,可以协助阅读。) 目录 Part 1: 工具和概念 (Tools and concepts) 1 PHP和现代软件开发 (PHP and modern software development) 2 PHP的对象 (Objects in PHP) 3 有效的使用PHP的类 (Using PHP classes effectively) 4 了解对象和类 (Understanding objects and classes) 5 了解类之间的关系 (Understanding class relationships) 6 面向对象原理 (Object-oriented principles) 7 设计模式 (Design patterns) 8 怎样设计的问题:日期和时间处理 (Design how-to: date and time handling) Part 2: 测试和重构 (Testing and refactoring) 9 测试驱动开发 (Test-driven development) 10 高级测试技术 (Advanced testing techniques) 11 Web应用重构 (Refactoring web applications) 12 Web测试的控制 (Taking control with web tests) Part 3: Web接口的创建 (Building the web interface) 13 使用模板来管理web的表述 (Using templates to manage web presentation) 14 构建复杂的网页 (Constructing complex web pages) 15 用户互动 (User interaction) 16 控制器 (Controllers) 17 输入证实 (Input validation) 18 表单的处理 (Form handling) 19 数据库的连接,抽象,和配置 (Database connection, abstraction, and configuration) Part 4: 数据库和基础建设 (Databases and infrastructure) 20 对象和SQL (Objects and SQL) 21 数据类的设计 (Data class design)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值