php结束符使用技巧
在PHP一段语言中
<?php
phpinfo();
?>
例1
<?php
phpinfo()
?> //在php语言中,在语言最后结束时phpinfo()可以不加“;”,后面的?>这个可以直接作为结束,以及默认可以作为正确解释。
例2
<?php
phpinfo();
//在phpinfo();为最后语句时,可以不用加?>,也可以正确解析,这个在以后作为调用时,可以避免出错,所以推荐在语句结束时,可以不用“?>”
题目也就是做个和演示差不多一个意思的了,给的提示应该是很充分的,包括各种函数都有。
在PHP 检查表单是否提交的两种方法中提到了如何检测提交,利用这个方法我们就可以节省一个HTML文件了。
$_POST是一个数组(超全局变量),如果页面的请求方式是POST,在这个数组里就会存上相应的内容,
empty()函数以前有讲过,还有一个isset()的区别文章后面也介绍过
然后基本上就很易懂了
源码:
代码如下 | 复制代码 |
<!DOCTYPE html> |
关于
empty()函数参数是非或非零的值,则empty()返回FALSE:
"",0,"0",NULL,FALSE,array(),var $var都被认为是空,如果函数为空,则返回TRUE。
isset()参数存在,则返回TRUE,否则返回FALSE,如果使用isset()测试一个被设置成NULL的变量或者使用unset()释放了一个变量,则返回FALSE。
复习:NULL字节("")并不等同于PHP的NULL函数。
注:判断一个变量存在且不为空:!empty($var) - 推荐
PHP是弱类型的语言
PHP中共有8中类型
4种标量 //只能存储一个值)
1.整 型:int integer
2.布尔型:bool boolean
3.浮点型:float,double,real
4.字符型:string
2种复合类型 //一个变量能存储多个值
1.数组:array //只能存储多个变量
2.对象:object //可存变量以及函数
2中特殊类型
1.资源类型:resource
2.空 类 型:null
例子:Var_dump(变量或值); //即可以查看变量或值的类型,又可以看数据
代码:
<?php
//输出整数型
$var=10;
echo "<pre>"; //<pre>标签是以代码原形输出
var_dump($var);//输出结果:int(10),意思是为整数型,值为10
echo "</pre>";
echo "----------------------<br>";
//输出浮点型
$var=11.11;
echo "<pre>";
var_dump($var);//输出结果:float(11.11),意思是为浮点型,值为11.11
echo "</pre>";
echo "----------------------<br>";
//输出布尔型
$var=true;
echo "<pre>";
var_dump($var);//输出结果:bool(true),意思是为布尔型,值为true
echo "</pre>";
echo "----------------------<br>";
//输出字符型
$var="mk";
echo "<pre>";
var_dump($var);//输出结果:string(2) "mk",意思是为字符型,值为mk
echo "</pre>";
echo "----------------------<br>";
//输出数组
$var=array(1,2,3);
echo "<pre>";
var_dump($var);
echo "</pre>";
echo "----------------------<br>";
?>
数据类型的转换
一种是强制转换:
1.setType(变量,类型);//类型int,integer,float,double,real,bool,boolena,string,array,object
这个函数将原变量的类型改变,var_dump();
代码:
$str="100.1254abc";
setType($str,int);
var_dump($str);
2.在赋值前使用(类型)的形式,不会改变原变量的类型($a=(int)$str;)
代码:
$str="100.1254abc";
$a=(int)$str;
var_dump($a);
var_dump($str);
3.$变量=intval(变量或值);
$变量=float(变量或值);
$变量=stringval(变量或值);
代码:
$str="100.1254abc";
$a=intval($str);
var_dump($a);
注意:整型在内存中占4个字节
浮点型在内存中占8个字节
一种是自动转换(这是PHP最常用的方式,因为这种我们开发时不用去管理类型,变量会根据运行环境自动转换)
代码:
$a=10;
$b=true;
$c="100abc";
$d=12.14;
$sum=$a+$b+$c+$d;
var_dump($sum);
与变量和类型有关的一些常用函数
isset(); //是判断变量存不存在,值如果是null,也表示空
代码:
$a="";
if(isset($a)){
echo "存在";
}else{
echo "不存在";
}
empty(); //判断一个变量是否为空,如 "" null
代码:
$a="";
if(empty($a)){
echo "null";
}else{
echo "No null";
}
unset();
setType();
getType();
变量类型测试函数
is_bool();
is_int(); is_integer(); is_long();
is_string();
is_float(); is_double(); is_real();
is_array();
is_object();
is_resource();
is_null();
is_scalar();
is_numberic();
is_callable();
常量的声明与使用
1.常量是一个简单的标识符
2.常量定以后不能再改变他的值,也不能使用unset()取消
3.常量可以不用理会变量范围的规则而在任何地方都可以定义和访问
4.常量使用define("常量名",值)
5.常量名在声明和使用都不使用"$"
6.常量名称习惯使用大写
7.常量的值只能用标量类型(int,float,bool,string)
8.常量一定要在声明时就给值
9.defined("常量") //判断常量存不存在
代码:
define("MK","Morker");
echo MK;
defined();
代码:
define("MK2B","Morker");
if(defined("MK")){
echo MK;
}else{
define("MK",504815135);
}
echo MK;
思路:既然星际的画面由几个部分组成:地图(就是地形和矿产),建筑,部队。那么我们把他们看成是零件,组装起来就是最后的产品(整个画面)。
建造器(Builder)模式示例:
代码如下 | 复制代码 |
<?php //规范制造各个零件的接口 interface Builder { //制造地图零件 public function buildMapPart(); //制造建筑零件 public function buildBuildingPart(); //制造部队零件 public function buildArmyPart(); //组装零件 public function getResult(); } //实际建造器类,比如初始化某个任务关 class ConcreteBuilder implements Builder { //制造地图零件 public function buildMapPart() { //根据任务的设定画上地图 echo '地图零件n'; } //制造建筑零件 public function buildBuildingPart() { //根据任务的设定画上建筑,包括玩家的和敌人的 echo '建筑零件n'; } //制造部队零件 public function buildArmyPart() { //根据任务的设定画上部队,包括玩家的和敌人的 echo '部队零件n'; } //组装零件 public function getResult() { //将所有的东西叠加和处理,形成初始化画面 echo '组装零件n'; } } //监督类,也就是控制绘制流程的类 class Director { //私有属性,确定使用的建造器 private $builder; //构造方法,参数为选定的建造器对象 public function __construct($builder) { //确定使用的建造器 $this->builder = $builder; } //负责建造流程的方法,调用建造器对象的方法,制造所有零件 public function buildeAllPart() { //制造地图零件 $this->builder->buildMapPart(); //制造建筑零件 $this->builder->buildBuildingPart(); //制造部队零件 $this->builder->buildArmyPart(); } } //假设根据任务关,初始化我们需要的实际建造器对象 $concreteBuilder = new ConcreteBuilder(); //初始化一个监督对象 $director = new Director($concreteBuilder); //制造所有零件 $director->buildeAllPart(); //最后让建造器组装零件,生成画面 $concreteBuilder->getResult(); ?> |
用途总结:建造器模式可以将流程和细节分离,各司其职。
实现总结:需要一个建造器接口或者抽象类,负责规范各个方法,比如上面的Builder。然后让实际的建造器类去实现所有的方法,比如上面的ConcreteBuilder。同时需要负责流程管理的监督类,比如上面的Director,负责调用建造器的各个零件制造方法。最后让建造器去组装所有的零件
代码如下 | 复制代码 |
<?php $method = $object->getMethod('load_app_class'); |
相关文章
- 有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
- 这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
- ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。  ...2017-07-06
- PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
- photoshop软件是一款专业的图像设计软件了,但对电脑的要求也是越高越好的,如果配置一般打开ps会比较慢了,那么photoshop打开很慢怎么办呢,下面来看问题解决办法。 1、...2016-09-14
- 许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
- JQuery使我们在开发Ajax应用程序的时候提高了效率,减少了许多兼容性问题,我们在Ajax项目中,遇到ajax异步获取数据出错怎么办,我们可以通过捕捉error事件来获取出错的信息。在没给大家介绍正文之前先给分享Jquery中AJAX参...2015-11-24
使用insertAfter()方法在现有元素后添加一个新元素
复制代码 代码如下: //在现有元素后添加一个新元素 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement){ parent.appendChild(newEl...2014-05-31- 大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
使用percona-toolkit操作MySQL的实用命令小结
1.pt-archiver 功能介绍: 将mysql数据库中表的记录归档到另外一个表或者文件 用法介绍: pt-archiver [OPTION...] --source DSN --where WHERE 这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将...2015-11-24如何使用php脚本给html中引用的js和css路径打上版本号
在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、...2015-11-24- index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
jQuery 1.9使用$.support替代$.browser的使用方法
jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9。 如果要全面支持 IE,并混合...2014-05-31安装和使用percona-toolkit来辅助操作MySQL的基本教程
一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24- C#注释的一些使用方法浅谈,需要的朋友可以参考一下...2020-06-25
- 一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
- 目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识...2015-10-30
- 无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
- php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25
- 刷票行为,一直以来都是个难题,无法从根本上防止。但是我们可以尽量减少刷票的伤害,比如:通过人为增加的逻辑限制。基于 PHP,下面介绍防刷票的一些技巧:1、使用CURL进行信息伪造$ch = curl_init(); curl_setopt($ch, CURLOP...2015-11-24