博客列表 >02月13日作业:PSR-规范(自动加载器)和composer组件

02月13日作业:PSR-规范(自动加载器)和composer组件

李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰
李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰原创
2020年02月15日 22:37:48647浏览

作业一

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: 必须放在可见性声明后面
  • 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;
}

  1. public static function abc() : string
  2. {
  3. return __FUNCTION__;
  4. }

}

// echo User::get();

  1. demo1代码:
  2. ```php
  3. <?php
  4. namespace part1;
  5. spl_autoload_register(function($class)
  6. {
  7. $prefix='App\edu\\';
  8. $base_dir=__DIR__.'\src\\';
  9. $real_class=substr($class,strlen($prefix));
  10. // echo $real_class;
  11. $path=str_replace('\\',DIRECTORY_SEPARATOR,$real_class);
  12. // die($path);
  13. $file=$base_dir.$path.'.php';
  14. // die($file);
  15. var_dump($file);
  16. file_exists($file) ? require $file : die('文件不存在,加载失败');
  17. });

demo.php代码:

  1. <?php
  2. namespace part1;
  3. use App\edu\home\User;
  4. require 'demo1.php';
  5. 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;

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议
李**¹⁸⁰³⁹⁵⁴⁰¹²⁰2020-02-16 14:23:311楼
@Peter-Zhu,好的,明白!