弯路都有哪些,我列举下你可以对照着看看
数据库查询用字符串拼接。正常的做法是用ORM进行封装
分不清PHP和JavaScript各自都干啥。这个真无解,你得好好了解啥是客户端脚本啥是服务端脚本以为PHP是最牛逼的语言。千万别这么认为以为web开发里PHP是最牛逼的语言。
同上条,千万别这么认为以为会数据库查询、会PHP读取数据展示就认为会写网站了。这个水平只能写个个人主页
搞不清session是啥。好好学习HTTP协议
PHP 代码是运行在服务端的
当看到 PHP 长长的特性列表时,请不要害怕
PHP的配置又是IIS又是Apache的,怎么不是.exe双击一下就可以了呢,太麻烦了
可以在 PHP 中使用四对不同的开始和结束标记:
代码段中的最后一行可以不用分号结束
为什么会有不期望的空白符?
echo print== println
当转换为 boolean 时,以下值被认为是 FALSE:
- 布尔值 FALSE 本身
- 整型值 0(零)
- 浮点型值 0.0(零)
- 空字符串,以及字符串 “0”
- 不包括任何元素的数组
- 特殊类型 NULL(包括尚未赋值的变量)
- 从空标记生成的 SimpleXML 对象
-1 和其它非零值(不论正负)一样,被认为是 TRUE!
要使用八进制表达,数字前必须加上 0(零)。要使用十六进制表达,数字前必须加上 0x。要使用二进制表达,数字前必须加上 0b。
$这是什么?
不要将未知的分数强制转换为 integer,这样有时会导致不可预料的结果。??//什么意思
security warning:
解决方法:去PHP的安装地址找到php.ini,找到【extension=php_openssl.dll】,去掉前面的注释。然后在Composer退回上一步重新点击下一步。
__LINE__ | 文件中的当前行号 | echo ‘这是第 ” ’ . __LINE__ . ’ ” 行’; |
---|---|---|
__FILE__ | 文件的完整路径和文件名 | |
__DIR__ | 文件所在的目录 | |
__FUNCTION__ | 函数名称 | |
__CLASS__ | 类的名称 | |
__TRAIT__ | Trait 的名字 | |
__METHOD__ | 类的方法名 | 函数名 |
__NAMESPACE__ | 当前命名空间的名称(区分大小写) |
PHP 命名空间可以解决以下两类问题:
- 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
- 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性
在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前。
<?php
declare(encoding='UTF-8'); //定义命名空间和不包含在命名空间中的代码
namespace MyProject {
子命名空间
wamp是windows+apache+mysql+php
在httpd.conf中改80为88,记住,改两个,除了12345678的那个外
做php开发和测试
虽然在composer install中出现Nothing to install or update(之前我安装了composer),但还是出现了laravel,而且我的composer是走的7.x的安装路径,但是warm是用的5.x,换成7的时候就会离线,自动换为5
$是个变量前缀
$$a 变量的变量是指该变量的名称由另外一个变量的值来确定
$name = "hello";
$a='name';
echo $$a;//输出 hello
命名空间使用
<?php
namespace Article;
class Comment { }
namespace MessageBoard;
class Comment { }
//调用当前空间(MessageBoard)的Comment类
$comment = new Comment();
//调用Article空间的Comment类
$article_comment = new \Article\Comment();
?>
可以看到,在MessageBoard空间中调用article空间里的Comment类时,使用了一种像文件路径的语法: \空间名\元素名
在一个命名空间里引入某个脚本,脚本里的元素不会归属到这个命名空间,如果这个脚本里没有定义其它命名空间,它的元素就始终处于公共空间中:
$filter_XSS = new FilterXSS(); //出现致命错误:找不到
$filter_XSS = new \FilterXSS(); //正确
- 非限定名称
- 限定名称
完全限定名称
//创建空间Blog
namespace Blog;
class Comment { }
//非限定名称,表示当前Blog空间
//这个调用将被解析成 Blog\Comment();
$blog_comment = new Comment();//限定名称,表示相对于Blog空间
//这个调用将被解析成 Blog\Article\Comment();
$article_comment = new Article\Comment(); //类前面没有反斜杆\//完全限定名称,表示绝对于Blog空间
//这个调用将被解析成 Blog\Comment();
$article_comment = new \Blog\Comment(); //类前面有反斜杆\//完全限定名称,表示绝对于Blog空间
//这个调用将被解析成 Blog\Article\Comment();
$article_comment = new \Blog\Article\Comment(); //类前面有反斜杆\
别名和导入可以看作是调用命名空间元素的一种快捷方式
//创建一个BBS空间(我有打算开个论坛)
namespace BBS;
//导入一个命名空间
use Blog\Article;
//导入命名空间后可使用限定名称调用元素
$article_comment = new Article\Comment();
//为命名空间使用别名
use Blog\Article as Arte;
//使用别名代替空间名
$article_comment = new Arte\Comment();
//导入一个类
use Blog\Article\Comment;
//导入类后可使用非限定名称调用元素
$article_comment = new Comment();
//为类使用别名
use Blog\Article\Comment as Comt;
//使用别名代替空间名
$article_comment = new Comt();
动态调用
//namespace关键字表示当前空间
echo namespace\PATH; ///Blog/article
$comment = new namespace\Comment();
//魔法常量NAMESPACE的值是当前空间名称
echo NAMESPACE; //Blog\Article
//可以组合成字符串并调用
$comment_class_name = NAMESPACE . ‘\Comment’;
comment=new
comment_class_name();