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文件,可能由于字符集的原因导致文件无法运行并报错。