为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
PHP进阶篇_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

PHP进阶篇

Jason PHP开发工程师
难度初级
时长 9小时28分
  • 抛出一个异常 1、基本语法 try{ //可能出现错误或异常的代码 //catch表示捕获,Exception是php已定义好的异常类 } catch(Exception $e){ //对异常处理,方法: //1、自己处理 //2、不处理,将其再次抛出 } 2、处理处理程序应当包括: Try - 使用异常的函数应该位于 "try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。 Throw - 这里规定如何触发异常。注意:每一个 "throw" 必须对应至少一个 "catch",当然可以对应多个"catch" Catch - "catch" 代码块会捕获异常,并创建一个包含异常信息的对象。 //创建可抛出一个异常的函数 function checkNum($number){ if($number>1){ throw new Exception("异常提示-数字必须小于等于1"); } return true; } //在 "try" 代码块中触发异常 try{ checkNum(2); //如果异常被抛出,那么下面一行代码将不会被输出 echo '如果能看到这个提示,说明你的数字小于等于1'; }catch(Exception $e){ //捕获异常 echo '捕获异常: ' .$e->getMessage(); } 上面代码将获得类似这样一个错误: 捕获异常:: 异常提示-数字必须小于等于1 例子解释: 上面的代码抛出了一个异常,并捕获了它: 创建 checkNum() 函数。它检测数字是否大于 1。如果是,则抛出一个异常。 在 "try" 代码块中调用 checkNum() 函数。 checkNum() 函数中的异常被抛出 "catch" 代码块接收到该异常,并创建一个包含异常信息的对象 ($e)。 通过从这个 exception 对象调用 $e->getMessage(),输出来自该异常的错误消息
    查看全部
  • 当我们了解了如何使用mysql_query进行数据查询以后,那么类似的,插入数据其实也是通过执行一个sql语句来实现,例如: $sql = "insert into user(name, age, class) values('李四', 18, '高三一班')"; mysql_query($sql); //执行插入语句 通常数据都是存储在变量或者数组中,因此sql语句需要先进行字符串拼接得到。 $name = '李四'; $age = 18; $class = '高三一班'; $sql = "insert into user(name, age, class) values('$name', '$age', '$class')"; mysql_query($sql); //执行插入语句 在mysql中,执行插入语句以后,可以得到自增的主键id,通过PHP的mysql_insert_id函数可以获取该id。 $uid = mysql_insert_id(); 这个id的作用非常大,通常可以用来判断是否插入成功,或者作为关联ID进行其他的数据操作
    查看全部
  • 在数据库建立连接以后就可以进行查询,采用mysql_query加sql语句的形式向数据库发送查询指令。 $res = mysql_query('select * from user limit 1'); 对于查询类的语句会返回一个资源句柄(resource),可以通过该资源获取查询结果集中的数据。 $row = mysql_fetch_array($res); var_dump($row); 默认的,PHP使用最近的数据库连接执行查询,但如果存在多个连接的情况,则可以通过参数指令从那个连接中进行查询。 $link1 = mysql_connect('127.0.0.1', 'code1', ''); $link2 = mysql_connect('127.0.0.1', 'code1', '', true); //开启一个新的连接 $res = mysql_query('select * from user limit 1', $link1); //从第一个连接中查询数据
    查看全部
  • PHP要对数据库进行操作,首先要做的是与数据库建立连接,通常我们使用mysql_connect函数进行数据库连接,该函数需要指定数据库的地址,用户名及密码。 $host = 'localhost'; $user = 'code1'; $pass = ''; $link = mysql_connect($host, $user, $pass); PHP连接数据库的方式类似于直接在命令行下通过进行连接,类似:mysql -hlocalhost -ucode1 -p,当连接成功以后,我们需要选择一个操作的数据库,通过mysql_select_db函数来选择数据库。 mysql_select_db('code1'); 通常我们会先设置一下当前连接使用的字符编码,一般的我们会使用utf8编码。 mysql_query("set names 'utf8'"); 通过上面的步骤,我们就与数据库建立了连接,可以进行数据操作了。
    查看全部
  • 获取错误发生的所在行 在异常被捕获之后,我们可以通过异常处理对象获取其中的异常信息,前面我们已经了解捕获方式,以及获取基本的错误信息。 在实际应用中,我们通常会获取足够多的异常信息,然后写入到错误日志中。 通过我们需要将报错的文件名、行号、错误信息、异常追踪信息等记录到日志中,以便调试与修复问题。
    查看全部
  • 在了解了异常处理的基本原理之后,我们可以通过try catch来捕获异常,我们将执行的代码放在try代码块中,一旦其中的代码抛出异常,就能在catch中捕获。 这里我们只是通过案例来了解try catch的机制以及异常捕获的方法,在实际应用中,不会轻易的抛出异常,只有在极端情况或者非常重要的情况下,才会抛出异常,抛出异常,可以保障程序的正确性与安全,避免导致不可预知的bug。 一般的异常处理流程代码为: try { throw new Exception('wrong'); } catch(Exception $ex) { echo 'Error:'.$ex->getMessage().'<br>'; echo $ex->getTraceAsString().'<br>'; } echo '异常处理后,继续执行其他代码';
    查看全部
  • PHP具有很多异常处理类,其中Exception是所有异常处理的基类。 Exception具有几个基本属性与方法,其中包括了: message 异常消息内容 code 异常代码 file 抛出异常的文件名 line 抛出异常在该文件的行数 其中常用的方法有: getTrace 获取异常追踪信息 getTraceAsString 获取异常追踪信息的字符串 getMessage 获取出错信息 如果必要的话,可以通过继承Exception类来建立自定义的异常处理类。 //自定义的异常类,继承了PHP的异常基类Exception class MyException extends Exception { function getInfo() { return '自定义错误信息'; } } try { //使用异常的函数应该位于 "try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。 throw new MyException('error');//这里规定如何触发异常。注意:每一个 "throw" 必须对应至少一个 "catch",当然可以对应多个"catch" } catch(Exception $e) {//"catch" 代码块会捕获异常,并创建一个包含异常信息的对象 echo $e->getInfo();//获取自定义的异常信息 echo $e->getMessage();//获取继承自基类的getMessage信息 }
    查看全部
  • 1、基本语法 try{ //可能出现错误或异常的代码 //catch表示捕获,Exception是php已定义好的异常类 } catch(Exception $e){ //对异常处理,方法: //1、自己处理 //2、不处理,将其再次抛出 } 2、处理处理程序应当包括: Try - 使用异常的函数应该位于 "try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。 Throw - 这里规定如何触发异常。注意:每一个 "throw" 必须对应至少一个 "catch",当然可以对应多个"catch" Catch - "catch" 代码块会捕获异常,并创建一个包含异常信息的对象。 //创建可抛出一个异常的函数 function checkNum($number){ if($number>1){ throw new Exception("异常提示-数字必须小于等于1"); } return true; } //在 "try" 代码块中触发异常 try{ checkNum(2); //如果异常被抛出,那么下面一行代码将不会被输出 echo '如果能看到这个提示,说明你的数字小于等于1'; }catch(Exception $e){ //捕获异常 echo '捕获异常: ' .$e->getMessage(); } 上面代码将获得类似这样一个错误: 捕获异常:: 异常提示-数字必须小于等于1 例子解释: 上面的代码抛出了一个异常,并捕获了它: 创建 checkNum() 函数。它检测数字是否大于 1。如果是,则抛出一个异常。 在 "try" 代码块中调用 checkNum() 函数。 checkNum() 函数中的异常被抛出 "catch" 代码块接收到该异常,并创建一个包含异常信息的对象 ($e)。 通过从这个 exception 对象调用 $e->getMessage(),输出来自该异常的错误消息
    查看全部
  • 使用正则表达式进行匹配 使用正则表达式的目的是为了实现比字符串处理函数更加灵活的处理方式,因此跟字符串处理函数一样,其主要用来判断子字符串是否存在、字符串替换、分割字符串、获取模式子串等。 PHP使用PCRE库函数来进行正则处理,通过设定好模式,然后调用相关的处理函数来取得匹配结果。 preg_match用来执行一个匹配,可以简单的用来判断模式是否匹配成功,或者取得一个匹配结果,他的返回值是匹配成功的次数0或者1,在匹配到1次以后就会停止搜索。 $subject = "abcdef"; $pattern = '/def/'; preg_match($pattern, $subject, $matches); print_r($matches); //结果为:Array ( [0] => def ) 上面的代码简单的执行了一个匹配,简单的判断def是否能匹配成功,但是正则表达式的强大的地方是进行模式匹配,因此更多的时候,会使用模式: $subject = "abcdef"; $pattern = '/a(.*?)d/'; preg_match($pattern, $subject, $matches); print_r($matches); //结果为:Array ( [0] => abcd [1] => bc ) 通过正则表达式可以匹配一个模式,得到更多的有用的数据。
    查看全部
  • 贪婪模式与懒惰模式 正则表达式中每个元字符匹配一个字符,当使用+之后将会变的贪婪,它将匹配尽可能多的字符,但使用问号?字符时,它将尽可能少的匹配字符,既是懒惰模式。 贪婪模式:在可匹配与可不匹配的时候,优先匹配 //下面的\d表示匹配数字 $p = '/\d+\-\d+/'; $str = "我的电话是010-12345678"; preg_match($p, $str, $match); echo $match[0]; //结果为:010-12345678 懒惰模式:在可匹配与可不匹配的时候,优先不匹配 $p = '/\d?\-\d?/'; $str = "我的电话是010-12345678"; preg_match($p, $str, $match); echo $match[0]; //结果为:0-1 当我们确切的知道所匹配的字符长度的时候,可以使用{}指定匹配字符数 $p = '/\d{3}\-\d{8}/'; $str = "我的电话是010-12345678"; preg_match($p, $str, $match); echo $match[0]; //结果为:010-12345678
    查看全部
  • 元字符与转义 正则表达式中具有特殊含义的字符称之为元字符,常用的元字符有: \ 一般用于转义字符 ^ 断言目标的开始位置(或在多行模式下是行首) $ 断言目标的结束位置(或在多行模式下是行尾) . 匹配除换行符外的任何字符(默认) [ 开始字符类定义 ] 结束字符类定义 | 开始一个可选分支 ( 子组的开始标记 ) 子组的结束标记 ? 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词) * 量词,0 次或多次匹配 + 量词,1 次或多次匹配 { 自定义量词开始标记 } 自定义量词结束标记 //下面的\s匹配任意的空白符,包括空格,制表符,换行符。[^\s]代表非空白符。[^\s]+表示一次或多次匹配非空白符。 $p = '/^我[^\s]+(苹果|香蕉)$/'; $str = "我喜欢吃苹果"; if (preg_match($p, $str)) { echo '匹配成功'; } 元字符具有两种使用场景,一种是可以在任何地方都能使用,另一种是只能在方括号内使用,在方括号内使用的有: \ 转义字符 ^ 仅在作为第一个字符(方括号内)时,表明字符类取反 - 标记字符范围 其中^在反括号外面,表示断言目标的开始位置,但在方括号内部则代表字符类取反,方括号内的减号-可以标记字符范围,例如0-9表示0到9之间的所有数字。 //下面的\w匹配字母或数字或下划线。 $p = '/[\w\.\-]+@[a-z0-9\-]+\.(com|cn)/'; $str = "我的邮箱是Spark.eric@imooc.com"; preg_match($p, $str, $match); echo $match[0];
    查看全部
    0 采集 收起 来源:元字符与转义

    2018-03-22

  • 正则表达式的基本语法 PCRE库函数中,正则匹配模式使用分隔符与元字符组成,分隔符可以是非数字、非反斜线、非空格的任意字符。经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~),例如: /foo bar/ #^[^0-9]$# ~php~ 如果模式中包含分隔符,则分隔符需要使用反斜杠(\)进行转义。 /http:\/\// 如果模式中包含较多的分割字符,建议更换其他的字符作为分隔符,也可以采用preg_quote进行转义。 $p = 'http://'; $p = '/'.preg_quote($p, '/').'/'; echo $p; 分隔符后面可以使用模式修饰符,模式修饰符包括:i, m, s, x等,例如使用i修饰符可以忽略大小写匹配: $str = "Http://www.imooc.com/"; if (preg_match('/http/i', $str)) { echo '匹配成功'; }
    查看全部
  • 什么叫正则表达式 正则表达式是对字符串进行操作的一种逻辑公式,就是用一些特定的字符组合成一个规则字符串,称之为正则匹配模式。 $p = '/apple/'; $str = "apple banna"; if (preg_match($p, $str)) { echo 'matched'; } 其中字符串'/apple/'就是一个正则表达式,他用来匹配源字符串中是否存在apple字符串。 PHP中使用PCRE库函数进行正则匹配,比如上例中的preg_match用于执行一个正则匹配,常用来判断一类字符模式是否存在。
    查看全部
  • 方法的重载通过__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;
    查看全部
  • PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性 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;
    查看全部

举报

0/150
提交
取消
课程须知
需要有一定的网页基础知识如HTML、CSS样式等,并且已经学习完成《PHP入门篇》对PHP已经有了简单的了解,如变量、常量、数据类型等。
老师告诉你能学到什么?
全面的掌握PHP的理论知识与实践中的应用方法,提高编程能力与掌握网页开发技能。
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!