PHP开发笔记(一)

  • 聚客宝
  • 2021-08-06 16:55:21

(1)关于路径的问题,在windows与linux环境下,路径函数的字符串是不一样的。比如获取当前目录 dirname(.),linux都是“/”分割目录,而windows都是用反斜杠“\”来分割,与定义命名空间子空间的分割符是一致的。从windows系统转linux的时候需要引起注意的问题。尽可能少用这种调用函数。


(2)编写框架数据库类遇到一个技术问题,如果在命名空间的页面,类中调用mysqli实例化($conn=new mysqli();)报错,找不到mysqli类;如果去掉页面的命名空间,则没有问题。如果直接换成 mysqli_connnect(),也没有问题。最后找到原因所在,必须为mysqli指定为全局空间类才行


相关的资料说明:

如果没有定义任何命名空间,所有的类与函数的定义都是在全局空间,与 PHP 引入命名空间概念前一样。在名称前加上前缀 \ 表示该名称是全局空间中的名称,即使该名称位于其它的命名空间中时也是如此。


<?php

//只要页面命名空间,就报错找不到mysqli;删除调页面空间命名,就可以通过;

    namespace core;


class db {

   

 public function connect (){

if($conn=new mysqli("localhost", "root", "122368", "hao2017")){

//if($conn=new \mysqli("localhost", "root", "122368", "hao2017")){


return "连接成功";

}else{

return "连接失败";

}

}

}


$mysql=new db();

echo $mysql->connect();


?>


(3)在使用数据库类添加新记录时,发现字段赋值为0,报错。查看类方法,是通过empty()来判定传递过来的数组,通过foreach($array as $key->$val),转化为键变量=键值后,键值是否给空。

通过查询有关资料发现,如果把empty("0")的值就是true。最后把empty()换成is_null,比较合适。


注意区别empty() is_null() isset()的区别。


PHP中,“NULL” 和 “空” 是2个概念。isset 主要用来判断变量是否被初始化过 。

empty 可以将值为 “假”、“空”、“0”、“NULL”、“未初始化” 的变量都判断为TRUE

is_null 仅把值为 “NULL” 的变量判断为TRUE

var == null 把值为 “假”、“空”、“0”、“NULL” 的变量都判断为TRUE

var === null 仅把值为 “NULL” 的变量判断为TRUE所以我们在判断一个变量是否真正为“NULL”时,大多使用 is_null,从而避免“false”、“0”等值的干扰。


(4)在使用mysql多表查询的过程中,返回的数据集调用,用数字报错,字段重名的时候,可以使用“ a.b as x1,c.b as x2 ”,来避免用字段调取时的重名问题。


$sql="select a.a as x1,a.b as x2,a.c as x3,b.a as y1,b.b as y2,b.c as y3 from a,b where a.a=b.a"


(5)在使用boostrap的过程中,在表单使用的时候一定引起注意,一个是<form method='' name='' action=''></form> 参数的设置必须小心。

在实际操作中,因为结束标签</form>放在了提交按钮的前面,整整2个多小时,无法提交表单数据。必须引起注意。


(6)使用sql创建数据库的时候,必须设定字符集,默认的容易出问题


(7)php.ini的 upload_tmp_dir="d:\phptmp",注意目录的斜杠方向


(8)不用使用记事本来修改php文件,可能由于字符集的原因导致文件无法运行并报错。