PSR [0-4]规范

 

FIG组织制定跟PHP相关规范,PHP Standard Recommendation简称PSR,PSR旨通过讨论我们代码项目的共同点找出一个协同编程的方法

 

目前通过的规范有PSR0(Autoloading Standard)、PSR-1(Basic Coding Standard)、PSR-2(Coding Style Guide)、PSR-3(Logger Interface)、PSR-4(Improved Autoloading)

 

 

PSR-0(Autoloading Standard)

 

PSR-0 即类自动加载规范(原文: 官网 、 GitHub )。从2014-10-21日起,该规范被标记为 Deprecated ,由PSR-4替代。它的内容十分简洁。

内容:

  1. 一个完全合格的命名空间和类名必须有以下的结构“\< Vendor Name >\(<Namespace >\)*< Class Name >”
  2. 每个命名空间必须有顶级的命名空间(“Vendor Name”)
  3. 每个命名空间可以有任意多个子命名空间
  4. 每个命名空间在被从文件系统加载时必须被转换为“操作系统路径分隔符”(DIRECTORY_SEPARATOR )
  5. 每个“_”字符在“类名”中被转换为DIRECTORY_SEPARATOR 。“_”符号在命名空间中没有明确含义
  6. 符合命名标准的命名空间和类名必须以“.php”结尾来加载文件
  7. Vendor Name ,命名空间,类名可以由大小写字母组成,其中命名空间和类名是大小写敏感的以保证多系统兼容性

PSR-1(Basic Coding Standard)

PSR-1 即基础编码标准(原文: 官网 、 GitHub )。内容也是否简洁,包含了类文件、类名、类方法名的命名方法。

内容:

  1. 源文件必须只使用 <?php 和 <?= 这两种标签

  2. 源文件中php代码的编码格式必须只使用不带BOM的UTF-8

  3. 一个源文件建议只用来做声明(类,函数,常量等)或者只用来做一些引起副作用的操作(例如:输出信息,修改.ini配置文件等),但不应该同时做这两件事

  4. 命名空间和类必须遵守PSR-0标准

  5. 类名必须使用StudlyCaps写法

  6. 类中的常量必须只由大写字母和下划线(_)组成

  7. 方法名必须使用cameCase写法

PSR-2(Coding Style Guide)

PSR-2 即编码风格标准(原文: 官网 、 GitHub )。内容就稍多,但还是比较简洁,它以PSR-1为基础,包含了缩进、每行代码长度、换行、方法可见性声明、空格和方法体大括号换行的相关规定。

标准内容:

  1. 代码必须遵守 PSR-1

  2. 代码必须使用4个空格来进行缩进,而不是用制表符

  3. 一行代码的长度不应有硬限制;软限制必须为120个字符,建议每行代码80个字符或者更少

  4. 在命名空间的声明下面必须有一行空行,并且在use的声明下面也必须有一行空行

  5. 类的左花括号必须放到其声明下面自成一行,右花括号则必须放到类主体下面自成一行

  6. 方法的左花括号必须放到其声明下面自成一行,右花括号则必须放到方法主体的下一行

  7. 所有的属性和方法必须有可见性声明;abstract和final声明必须在可见性声明之前;而static声明必须在可见性声明之后

  8. 在结构控制关键字的后面必须有一个空格;而方法和函数调用时后面不可有空格

  9. 结构控制的左花括号必须跟其放在同一行,右花括号必须放在该结构控制代码主体的下一行

  10. 控制结构的左括号之后不可有空格,右括号之前也不可有空格

PSR-3(Logger Interface)

PSR-3 是对应用日志类的通过接口的定义(原文: 官网 、 GitHub )。内容很简单,就是一个接口,官方示例代码引用一下就好了。当然,在具体的应用中,只要遵循该接口,肯定可以定制相应的实现。

基础内容:

  1. LoggerInterface暴露八个接口用来记录八个等级(debug, info, notice, warning, error, critical, alert, emergency)的日志。

  2. 第 九个方法是log,接受日志等级作为第一个参数。用一个日志等级常量来调用这个方法必须和直接调用指定等级方法的结果一致。用一个本规范中未定义且不为具 体实现所知的日志等级来调用该方法必须抛出一个Psr\Log\InvalidArgumentException。不推荐使用自定义的日志等级,除非你 非常确定当前类库对其有所支持。

PSR-4(Improved Autoloading)

PSR-4 即改进版的自动加载规范(原文: 官网 、 GitHub )。它是PSR-0规范的接替者。它可以与任何其它的自动加载规范兼容,包括PSR-0。

内容:

  1. 术语「类」是一个泛称;它包含类,接口,traits 以及其他类似的结构;
  2. 完全限定类名应该类似如下范例:<NamespaceName>(<SubNamespaceNames>)*<ClassName>
    1. 完全限定类名必须有一个顶级命名空间(Vendor Name)

    2. 完全限定类名可以有多个子命名空间

    3. 完全限定类名应该有一个终止类名

    4. 下划线在完全限定类名中是没有特殊含义的

    5. 字母在完全限定类名中可以是任何大小写的组合

    6. 所有类名必须以大小写敏感的方式引用

  3. 当从完全限定类名载入文件时:
    1. 在完全限定类名中,连续的一个或几个子命名空间构成的命名空间前缀(不包括顶级命名空间的分隔符),至少对应着至少一个基础目录

    2. 在「命名空间前缀」后的连续子命名空间名称对应一个「基础目录」下的子目录,其中的命名 空间分隔符表示目录分隔符。子目录名称必须和子命名空间名大小写匹配

    3. 终止类名对应一个以 .php 结尾的文件。文件名必须和终止类名大小写匹配

  4. 自动载入器的实现不可抛出任何异常,不可引发任何等级的错误;也不应返回值

注:具体规范内容参考了其他中文翻译版本整理。

 

转自:http://www.tuicool.com/articles/BfuAnqF

 

 

(完)

 

 

在使用Python来安装geopandas包时,由于geopandas依赖于几个其他的Python库(如GDAL, Fiona, Pyproj, Shapely等),因此安装过程可能需要一些额外的步骤。以下是一个基本的安装指南,适用于大多数用户: 使用pip安装 确保Python和pip已安装: 首先,确保你的计算机上已安装了Python和pip。pip是Python的包管理工具,用于安装和管理Python包。 安装依赖库: 由于geopandas依赖于GDAL, Fiona, Pyproj, Shapely等库,你可能需要先安装这些库。通常,你可以通过pip直接安装这些库,但有时候可能需要从其他源下载预编译的二进制包(wheel文件),特别是GDAL和Fiona,因为它们可能包含一些系统级的依赖。 bash pip install GDAL Fiona Pyproj Shapely 注意:在某些系统上,直接使用pip安装GDAL和Fiona可能会遇到问题,因为它们需要编译一些C/C++代码。如果遇到问题,你可以考虑使用conda(一个Python包、依赖和环境管理器)来安装这些库,或者从Unofficial Windows Binaries for Python Extension Packages这样的网站下载预编译的wheel文件。 安装geopandas: 在安装了所有依赖库之后,你可以使用pip来安装geopandas。 bash pip install geopandas 使用conda安装 如果你正在使用conda作为你的Python包管理器,那么安装geopandas和它的依赖可能会更简单一些。 创建一个新的conda环境(可选,但推荐): bash conda create -n geoenv python=3.x anaconda conda activate geoenv 其中3.x是你希望使用的Python版本。 安装geopandas: 使用conda-forge频道来安装geopandas,因为它提供了许多地理空间相关的包。 bash conda install -c conda-forge geopandas 这条命令会自动安装geopandas及其所有依赖。 注意事项 如果你在安装过程中遇到任何问题,比如编译错误或依赖问题,请检查你的Python版本和pip/conda的版本是否是最新的,或者尝试在不同的环境中安装。 某些库(如GDAL)可能需要额外的系统级依赖,如地理空间库(如PROJ和GEOS)。这些依赖可能需要单独安装,具体取决于你的操作系统。 如果你在Windows上遇到问题,并且pip安装失败,尝试从Unofficial Windows Binaries for Python Extension Packages网站下载相应的wheel文件,并使用pip进行安装。 脚本示例 虽然你的问题主要是关于如何安装geopandas,但如果你想要一个Python脚本来重命名文件夹下的文件,在原始名字前面加上字符串"geopandas",以下是一个简单的示例: python import os # 指定文件夹路径 folder_path = 'path/to/your/folder' # 遍历文件夹中的文件 for filename in os.listdir(folder_path): # 构造原始文件路径 old_file_path = os.path.join(folder_path, filename) # 构造新文件名 new_filename = 'geopandas_' + filename # 构造新文件路径 new_file_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'Renamed "{filename}" to "{new_filename}"') 请确保将'path/to/your/folder'替换为你想要重命名文件的实际文件夹路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值