问题描述
在我的许多PHP微库中,都有与项目名称匹配的Class,它创建了一个奇怪的完全合格的类名称,看看这个
import pandas as pd
import string
# test dataframe
df = pd.DataFrame({'cluster': range(1,11)})
# unique values from the cluster column
clusters = sorted(df.cluster.unique())
# create a dict to map
cluster_map = dict(zip(clusters,string.ascii_uppercase))
# create the cluster_name column
df['cluster_name'] = df.cluster.map(cluster_map)
# df
cluster cluster_name
0 1 A
1 2 B
2 3 C
3 4 D
4 5 E
5 6 F
6 7 G
7 8 H
8 9 I
9 10 J
然后,当我使用此类时,我会有烦人的双名重复
<?PHP
namespace Javanile\mysqlimport;
class mysqlimport {
...
}
根据PSR-4,我们有:
-
<?PHP $importer = new \Javanile\mysqlimport\mysqlimport(...); // OR (EVEN BAD) use Javanile\mysqlimport\mysqlimport; $importer = new mysqlimport(...);
:是供应商名称 -
Javanile
:是用于修复项目名称的子包名称 -
mysqlimport
:是库的主要类
请支持我在完整合格的类名上处理项目和主体类名的令人讨厌的重复。太糟糕了,正确的做法是什么? (我不想只是为了避免使用随机类名而已)
解决方法
这没错,但是如果您想要更干净的项目,则可以重新组织项目结构。例如:
Javanile
|__Importers
|__ Mysql.php <-- Mysql class with main logic
|__ Mysql <-- Folder with special MySQL logic,used in Mysql.php
|__ MysqlHelperThings.php
|__ SomethingElseForMysql.php
采用这种结构,您的use
路径将看起来像use Javanile\Importers\Mysql;