搜索

一、序言

 由于新公司的需要,我也就从原来的asp专向了,php的学习中。希望通过自己的学习能够尽快的熟悉了解php

二、php独特的语法特色

 1、引号问题

在php中单引号和双引号的作用基本相同,但是有些场合却又是不同的

都可以用来包含要引用字符串

<meta charset="utf-8"><?php    $str1="xiecanyong";    $str2='xcy';    echo $str1;    echo "<br />";    echo $str2;?>

但是单引号中的内容只被解析成为字符串,而双引号可以在字符串中加入变量

<meta charset="utf-8"><?php    $age=",I am age 22";    $str1="xiecanyong$age";    $str2='xcy$age';    echo $str1;    echo "<br />";    echo $str2;?>

 

结果就自行运行一下,这里不解释

2、PHP常量

PHP相比于ASP,存在一些系统封装好的常量,这些有利于我们的使用,同时还支持我们自行封装常量

常见的常量有:

如下一些常用的PHP系统常量:

__FILE__ 当前PHP文件名

__LINE__ 当前PHP文件中所在的行数

__FUNCTION__ 当前所执行的函数

__CLASS__ 当前所执行的类

PHP_VERSION PHP的版本

PHP_OS 当前服务器的操作系统

TRUE 同true

FALSE 同false

E_ERROR 到最近的错误处

E_WARNING 到最近的警告处

E_PARSE 语法有错误处

E_NOTICE PHP语言中有异常处

M__PI 圆周率

M__E 科学常数e

M__LOG2E 以2为底e的对数

M_LOG10E 以10为底e的对数

M_LN2 2的自然对数

M_LN10 10的自然对数

PHP系统常量的内容就介绍到这里,希望对大家有所帮助。

 举个例子:

<meta charset="utf-8"><?php    echo __Line__;?>

 

打印出来的结果是:3,表示当前是在第三行执行

在常量的使用中,我们一般是这样使用的

1、使用define方法来定义

<meta charset="utf-8"><?php    //模拟圆的面积计算    define("R", 5);    $area=R*R*pi();    echo $area;?>

 

2、使用const关键字来定义
例如:const p=2;这样就确定了一个常量p,值为2

3、常量的检验

对于一个大型项目而言,我们不知道某个参数是否为变量还是常量,如果是常量的话,那么重新赋值会发生错误,所以我们要通过defined方法来检验是否为某个参数是否为常量

 

<meta charset="utf-8"><?php    //$CONSTANT="2";    define("CONSTANT","2");if (defined('CONSTANT')) {    echo CONSTANT;}?>

 

 

 

 

3、PHP字符串操作

下面以一个综合的PHP字符串操作来讲解一下

<meta charset="utf-8"><?php    $str = "Hello PHP";    //获取指定字符在字符串中的位置    echo  strpos($str,"P")."<br>";    //截取指定位置的字符串(从第2个字符到最后)    $str1 = substr($str,2);    //截取指定位置的字符串(从第2个字符开始往后截取3位)    $str2 = substr($str,2,2);    //以指定间距分割字符串    $str3 = str_split($str);    $str4 = str_split($str,2);    print_r($str4)."<br>";    //以指定字符分割字符串    $str = "PHP JAVA JS HTML CSS";    $str5 = explode(" ",$str);    print_r($str5)."<br>";?>

 

字符串连接符

这里的字符串连接符跟其他语言的连接符有些不同,是通过"."来起到连接的,而在PHP中.=相当于其他语言的+=

错误控制运算符

PHP中提供了一个错误控制运算符“@”,对于一些可能会在运行过程中出错的表达式时,我们不希望出错的时候给客户显示错误信息,这样对用户不友好。表达式所产生的任何错误信息都被存放在变量$php_errormsg中,此变量在每次出错时都会被覆盖,所以如果想用它的话必须尽早检查。

<?php  $conn = @mysql_connect("localhost","username","password");echo "出错了,错误原因是:".$php_errormsg;?>

 

error_reporting(0); 禁止显示PHP警告提示

更多的字符串操作详见:http://www.jianshu.com/p/91ed5dc67977

4、可变函数

<meta charset="utf-8"><?php    function name(){        echo "xcy";    }    $n="name";    $n();?>

 

原理是:首先定义个一个name方法,然后是定义一个变量内容为name,最后一句其实就是$n()=name+(),也就是相当于执行了name这个方法

5、常见的内置函数

str_replace 可以实现字符串的替换

function_exists 判断一下函数是否存在

method_exists 可以用来检测类的方法是否存在

class_exists类是否定义可以使用 

6、PHP面向对象

一个简单的PHP面向对象

<meta charset="utf-8"><?php    //定义一个类    class Person{        //定义一个属性        public $name="liLei";        //定义一个方法        public function Hobby(){            return $this->name;        }    }<br />  //实例化    $per=new Person();    $per->name='xiaoLi';    echo $per->Hobby();?>

 

特别注意->后面的变量不能加上"$"

一般我们常见的有public、private、protected这三个修饰符

要注意的是方法和属性也可以被static修饰,但是被修饰的方法或者是属性不可以使用->来调用,应该要换成::

<meta charset="utf-8"><?php    //定义一个类    class Person{        //定义一个属性        static $name="LiLei";    }    error_reporting(0);    $per=new Person();    $per::name;?>

 

构造函数

在PHP中也存在构造函数,但是书写上与asp有些不通过

<meta charset="utf-8"><?php    //定义一个构造类    class Person{        public function __construct(){            echo "this is construct";        }    }    $per=new Person();?>

 

如果是继承关系中,子类可以通过parent::__construct()来调用父类的构造函数

<meta charset="utf-8"><?php    //定义一个构造类    class Person{        public function __construct(){            echo "父类构造函数\n";        }    }    class LiLei extends Person{        public function __construct(){            parent::__construct();            echo "子类构造函数\n";                    }    }    $per=new LiLei();?>

在static方法中,不允许使用$this来对自身的调用,应该要写成self,同时我们应该还要注意::这个符号后面的$是不能省略的

<meta charset="utf-8"><?php    //定义一个构造类    class Person{        public function __construct(){            echo "父类构造函数\n";        }    }    class LiLei extends Person{                public function __construct(){            parent::__construct();            echo "子类构造函数\n";                    }        public static $name='LiLei';        public static function GoodAt(){            return self::$name;        }    }    $per=new LiLei();    echo "<br />";    echo $per::GoodAt();?>

_destruct(),这个方法为析构函数,但是由于PHP中存在垃圾回收机制,所以这个不常用

重载

这里的重载跟C#中方法的重载不是同一个定义,这里的重载指的是,对属性的相关操作

class Car {  private $ary = array(); //创建属性  public function __set($key, $val) {     $this->ary[$key] = $val;  }  //获取属性  public function __get($key) {      if (isset($this->ary[$key])) {          return $this->ary[$key];      }      return null;  }  //判断属性是否存在  public function __isset($key) {      if (isset($this->ary[$key])) {          return true;      }      return false;  }  //释放属性  public function __unset($key) {      unset($this->ary[$key]);  }}$car = new Car();$car->name = '汽车';  //name属性动态创建并赋值echo $car->name;

方法的重载通过 call 来实现,当调用不存在的方法的时候,将会转为参数调用call方法,当调用不存在的静态方法时会使用 __callStatic 重载。

class Car {  public $speed = 0;  public function __call($name, $args) {      if ($name == 'speedUp') {          $this->speed += 10;      }  }}$car = new Car();$car->speedUp(); //调用不存在的方法会使用重载echo $car->speed;

 

其他高级的操作详见:http://www.jianshu.com/p/26ac93b6bf32

 

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
PHP的当前状态:查看网络开发趋势PHP的当前状态:查看网络开发趋势Apr 13, 2025 am 12:20 AM

PHP在现代Web开发中仍然重要,尤其在内容管理和电子商务平台。1)PHP拥有丰富的生态系统和强大框架支持,如Laravel和Symfony。2)性能优化可通过OPcache和Nginx实现。3)PHP8.0引入JIT编译器,提升性能。4)云原生应用通过Docker和Kubernetes部署,提高灵活性和可扩展性。

PHP与其他语言:比较PHP与其他语言:比较Apr 13, 2025 am 12:19 AM

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP与Python:核心功能PHP与Python:核心功能Apr 13, 2025 am 12:16 AM

PHP和Python各有优势,适合不同场景。1.PHP适用于web开发,提供内置web服务器和丰富函数库。2.Python适合数据科学和机器学习,语法简洁且有强大标准库。选择时应根据项目需求决定。

PHP:网络开发的关键语言PHP:网络开发的关键语言Apr 13, 2025 am 12:08 AM

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP:许多网站的基础PHP:许多网站的基础Apr 13, 2025 am 12:07 AM

PHP成为许多网站首选技术栈的原因包括其易用性、强大社区支持和广泛应用。1)易于学习和使用,适合初学者。2)拥有庞大的开发者社区,资源丰富。3)广泛应用于WordPress、Drupal等平台。4)与Web服务器紧密集成,简化开发部署。

超越炒作:评估当今PHP的角色超越炒作:评估当今PHP的角色Apr 12, 2025 am 12:17 AM

PHP在现代编程中仍然是一个强大且广泛使用的工具,尤其在web开发领域。1)PHP易用且与数据库集成无缝,是许多开发者的首选。2)它支持动态内容生成和面向对象编程,适合快速创建和维护网站。3)PHP的性能可以通过缓存和优化数据库查询来提升,其广泛的社区和丰富生态系统使其在当今技术栈中仍具重要地位。

PHP中的弱参考是什么?什么时候有用?PHP中的弱参考是什么?什么时候有用?Apr 12, 2025 am 12:13 AM

在PHP中,弱引用是通过WeakReference类实现的,不会阻止垃圾回收器回收对象。弱引用适用于缓存系统和事件监听器等场景,需注意其不能保证对象存活,且垃圾回收可能延迟。

解释PHP中的__ Invoke Magic方法。解释PHP中的__ Invoke Magic方法。Apr 12, 2025 am 12:07 AM

\_\_invoke方法允许对象像函数一样被调用。1.定义\_\_invoke方法使对象可被调用。2.使用$obj(...)语法时,PHP会执行\_\_invoke方法。3.适用于日志记录和计算器等场景,提高代码灵活性和可读性。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境