php结束符使用技巧

 更新时间:2016年11月25日 14:58  点击:1681
在php中结束有像;变量的定义结束与?>这种是php开始与结束了,但是在使用中我们有一些小技巧,下面我来给各位同学整理一下。

在PHP一段语言中

<?php
            phpinfo();
?>

例1
<?php
             phpinfo()
?>  //在php语言中,在语言最后结束时phpinfo()可以不加“;”,后面的?>这个可以直接作为结束,以及默认可以作为正确解释。

例2
<?php
              phpinfo();
//在phpinfo();为最后语句时,可以不用加?>,也可以正确解析,这个在以后作为调用时,可以避免出错,所以推荐在语句结束时,可以不用“?>”

好吧这是我上次布置的作业,为了收尾就写篇教程+w+,其实我还是觉得没什么好写的,方法非常的简单我们只要在当前页面判断是否为post或get有参数就进行获取输出例子。

题目也就是做个和演示差不多一个意思的了,给的提示应该是很充分的,包括各种函数都有。

在PHP 检查表单是否提交的两种方法中提到了如何检测提交,利用这个方法我们就可以节省一个HTML文件了。

$_POST是一个数组(超全局变量),如果页面的请求方式是POST,在这个数组里就会存上相应的内容,

empty()函数以前有讲过,还有一个isset()的区别文章后面也介绍过

然后基本上就很易懂了

源码:

 代码如下 复制代码

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>注册系统</title>
</head>
<body>
 <?php
 if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
 ?>
 <h2>注册</h2>
 <form action="form-post.php" method="post">
 用户名:<input type="text" name="username"><br/>
 密码<input type="password" name="password"><br/>
 <input type="checkbox" name="agree">同意许可协议<br/>
 <input type="submit" name="submit" value="提交">
 </form>
 <?php
 } else {
 $problem = FALSE;
 if (empty($_POST['username'])) {
 echo '请输入用户名<br/>';
 $problem = TRUE;
 }
 if (empty($_POST['password'])) {
 echo '请输入密码<br/>';
 $problem = TRUE;
 }
 if (empty($_POST['agree'])) {
 echo '您必须先同意许可协议<br/>';
 $problem = TRUE;
 }
 if (!$problem) {
 echo '<h2>注册成功</h2>';
 echo '欢迎' . $_POST['username'] . '你已成功注册,你的密码是' . $_POST['password'];
 }
 }
 ?>
</body>
</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变量与常量的使用例子,希望这些例子对各位学习php会有帮助。

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 使用反射获取类的文件路径的例子,希望此例子对大家有帮助。
 代码如下 复制代码

<?php
$pc_base =new pc_base();
$object = new ReflectionObject($pc_base);
//load_app_class 是类中的一个方法

$method = $object->getMethod('load_app_class');
$declaringClass = $method->getDeclaringClass();
$filename = $declaringClass->getFilename();
print_r($filename);
 
?>

[!--infotagslink--]

相关文章

  • 图解PHP使用Zend Guard 6.0加密方法教程

    有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • ps怎么使用HSL面板

    ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。 &#8195;...2017-07-06
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • photoshop打开很慢怎么办 ps打开慢的设置技巧

    photoshop软件是一款专业的图像设计软件了,但对电脑的要求也是越高越好的,如果配置一般打开ps会比较慢了,那么photoshop打开很慢怎么办呢,下面来看问题解决办法。 1、...2016-09-14
  • Plesk控制面板新手使用手册总结

    许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
  • Jquery Ajax Error 调试错误的技巧

    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
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目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?

    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#注释的一些使用方法浅谈

    C#注释的一些使用方法浅谈,需要的朋友可以参考一下...2020-06-25
  • MySQL日志分析软件mysqlsla的安装和使用教程

    一、下载 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
  • php语言中使用json的技巧及json的实现代码详解

    目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识...2015-10-30
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • php类的使用实例教程

    php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25
  • 基于PHP给大家讲解防刷票的一些技巧

    刷票行为,一直以来都是个难题,无法从根本上防止。但是我们可以尽量减少刷票的伤害,比如:通过人为增加的逻辑限制。基于 PHP,下面介绍防刷票的一些技巧:1、使用CURL进行信息伪造$ch = curl_init(); curl_setopt($ch, CURLOP...2015-11-24