作业一
1、知识点:
strncmp:字符串比较(二进制安全模式)例如:strncmp($str1,$str2,$int);
返回int型;
strlen:求字符串长度 例如:strlen($str);
返回int;
substr:截取字符串,例如:substr($str, $start, $strlen);
$start和$strlen位整数型,返回字符串;
str_replace:字符替换;例如:str_replace($former,$new,$str);返回字符串(把字符串中new替换掉former);
DIRECTORY_SEPARATOR:自适应湖获取当前系统的文件目录的连接符
自动加载函数:__autoload();sql_autoload_register();
作业二
PSR编码规范:
一、PSR-1:基本代码风格
- 1、PHP标签:
<?php ... ?>
,<?= ... ?>
- 2、编码:
UTF-8
- 3、功能单一: 一个脚本应该只做一件事,例如不要将声明和调用放在一个脚本中
- 4、命名空间: 必须符合PSR-4标准(主要是为了方便自动加载)
- 5、类名:
ClassName
大驼峰, 每一个单词的首字母必须大写 - 6、类属性和方法:
propertyName
,methodName
,除第一个单词之外,每个单词的首字母大写 - 7、常量: 单词字母必须全部大写,多个单词之间用下划线进行连接,
API
,APP_PATH
二、PSR-2:严格代码风格 - 1、首先代码必须先符合PSR-1
- 2、必须采用四个空格进行缩进,tab
- 3、一行代码建议不超过80个字符, 至少不要超过120个字符
- 4、一个纯的php脚本,最后必须加一个空行, 且不允许用结束标签
?>
- 5、关键字必须全部小写:
TRUE / FALSE
,true / false
- 6、命名空间后必须要空一行,
use
前后必须要有空行 - 7、类,类方法, 函数,后面的大括号必须另起一行
- 8、如果这个类是一个扩展类或实现类,
extends / implements
必须与类名在同一行 - 9、方法/函数中的参数列表中, 每个参数后要有一个逗号和一个空格(最后一个除外)
- 10、类中的所有属性和方法:
- a、必须全部声明可见性:
public, protected, private
- b、
abstract / final
: 必须放在可见性声明前面 - c、
static
: 必须放在可见性声明后面
- a、必须全部声明可见性:
- 11、控制结构:
if,while,for,foreach...
,关键字后面必须要有空格,起始大括号不允许换行
三、PSR-4:日志记录接口:(有日志接口组件)
四:PSR-4:自动加载器 - 1、传统文件加载使用
include / require
, 加载效率低, 不能实现按需要加载 - 2、
__autoload()
,spl_autoload_register()
注册加载器, 各框架各异并不统一 - 3、PSR-4: 实现代码在运行时, 实时查找PHP类/接口/Trait文件, 并自动加载到当前的脚本中
- 4、PSR-4: 要求需要自动加载的文件路径必须与该文件中的代码的命名空间一一对应
作业三
自动加载器代码:
User.php代码:
```php
<?php
namespace src\home;
class User
{
public static function get() : string
{
return CLASS;
}
public static function abc() : string
{
return __FUNCTION__;
}
}
// echo User::get();
demo1代码:
```php
<?php
namespace part1;
spl_autoload_register(function($class)
{
$prefix='App\edu\\';
$base_dir=__DIR__.'\src\\';
$real_class=substr($class,strlen($prefix));
// echo $real_class;
$path=str_replace('\\',DIRECTORY_SEPARATOR,$real_class);
// die($path);
$file=$base_dir.$path.'.php';
// die($file);
var_dump($file);
file_exists($file) ? require $file : die('文件不存在,加载失败');
});
demo.php代码:
<?php
namespace part1;
use App\edu\home\User;
require 'demo1.php';
User::get();
效果代码:
问题:总是提示错误:
fatal error: uncaught error: class ‘app\edu\home\user’ not found in d:\phpstudy_pro\www\newyear.com\0210\0213\demo.php:9 stack trace: #0 {main} thrown in d:\phpstudy_pro\www\newyear.com\0210\0213\demo.php on line 9
不知道怎么回事??user.php和demo1.php都没有问题,但是在demo.php中提示错误,无法解决!!求解作业四
1、composer组件安装,直接下载直接安装即可,不过安装时需要把php.exe配置电脑环境变量即可安装
2、安装组件:直接在工作文件夹目录下,输入安装插件命令即可自动安装;例如:composer require gregwar/captcha
3、组件导入使用,需要先加载加载器:require 'vendor\autoload.php';
,然后就可以同use关键字使用组件的相关功能:例如:use Gregwar\Captcha\CaptchaBuilder;