CN104331299A - 基于php环境的磁盘的文件加载方法和装置 - Google Patents
基于php环境的磁盘的文件加载方法和装置 Download PDFInfo
- Publication number
- CN104331299A CN104331299A CN201310308852.2A CN201310308852A CN104331299A CN 104331299 A CN104331299 A CN 104331299A CN 201310308852 A CN201310308852 A CN 201310308852A CN 104331299 A CN104331299 A CN 104331299A
- Authority
- CN
- China
- Prior art keywords
- file
- filename
- routing information
- path
- class
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明适用于数据调用领域,提供了一种基于PHP环境的磁盘的文件加载方法和装置,该方法包括:获取类的名称,所述类的名称包括文件名和所述文件名对应的文件的路径信息;解析所述类的名称,由所述类的名称解析得到包括文件名及所述文件名对应的文件的存储路径;根据所述文件的存储路径,查找所述文件名对应的文件,并加载所述文件。本发明和现有技术相比,不需要通过加载函数制定各自的映射规则,使加载更加简单、可靠,能够有效提高加载效率。
Description
技术领域
本发明属于数据调用领域,尤其涉及基于PHP环境的磁盘的文件加载方法和装置。
背景技术
在面向对象的应用程序开发时,为提高编程效率,常常需要使用大量包含各种函数的文件,通过在编程的开始的位置进行声明包含的文件的列表,可以方便在以后的程序编写过程中调用在所述声明的文件中的各个函数,从而可以减少常用函数反复编写等重复性工作,提高了编写程序工作人员的效率。但是,由于在每次程序编写时都需要对所有可能用到的函数所在的文件列表进行声明调用。
为避免对大量的文件列表的声明工作,在PHP5环境中,一般编写路由函数并通过sp_autoload_register注册到spl_autoload函数栈中,从而使得在程序中需要使用一个类时,如果发现这个类没有加载,就会自动运行__autoload()函数,在这个函数中我们可以加载需要使用的类。
现有的加载方法,通过__autoload()函数,根据类名确定类文件名,然后根据类文件名与存储路径的映射关系,确定类文件所在的磁盘路径,并将类文件从文件中加载到程序系统中。由于在一个系统的实现中,如果需要使用很多其它的类库,这些类库可能是由不同的开发人员编写的,其类名与实际的文件的映射规则不尽相同。这时如果要实现类库文件的自动加载,就必须在函数中将所有的映射规则全部实现,这样的话函数有会非常复杂、麻烦,而且需要维护一个专门的映射规则库,加载效率较低,甚至无法实现。
发明内容
本发明实施例的目的在于提供一种基于PHP环境的磁盘的文件加载方法和装置,以解决现有技术加载类库文件时因映射规则的加载复杂、麻烦而可能导致无法实现的问题,从而提高加载效率。
本发明实施例是这样实现的,一种基于PHP环境的磁盘的文件加载方法,所述方法包括:
获取类的名称,所述类的名称包括文件名和所述文件名对应的文件的路径信息;
解析所述类的名称,由所述类的名称解析得到包括文件名及所述文件名对应的文件的存储路径;
根据所述文件的存储路径,查找所述文件名对应的文件,并加载所述文件。
本发明实施例的另一目的在于提供一种基于PHP环境的磁盘的文件加载装置,所述装置包括:
获取单元,用于获取类的名称,所述类的名称包括文件名和所述文件名对应的文件的路径信息;
解析单元,用于解析所述类的名称,由所述类的名称解析得到包括文件名及所述文件名对应的文件的存储路径;
加载单元,用于根据所述文件的存储路径,查找所述文件名对应的文件,并加载所述文件。
在本发明实施例中,通过获取包括文件名称和文件名对应的文件的路径信息的类的名称,并根据所述类的名称解析得到文件名和所述文件名对应的文件的存储路径,根据存储路径得到加载的文件从而完成文件加载,本发明和现有技术相比,不需要通过加载函数制定各自的映射规则,使加载更加简单、可靠,能够有效提高加载效率。
附图说明
图1是本发明第一实施例提供的基于PHP环境的磁盘的文件加载方法的实现流程图;
图2是本发明第二实施例提供的基于PHP环境的磁盘的文件加载方法的实现流程图;
图3是本发明第三实施例提供的基于PHP环境的磁盘的文件加载装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例可用于系统开发过程中,在系统开发过程中,需要调用预先设定好的一些常用的函数,以提高编程效率。尤其在PHP5环境中,可通过路由函数自动加载程序中没有加载的类。但由于加载的类需要寻找到所述类对应的文件和存储路径,需要维护相应的映射规则,不便于多人开发和以后的程序的维护,而且在映射规则较多的情况下,还可能导致系统出错。本发明实施例正是出于现有的文件加载时,必须在函数中将所有的映射规则全部实现,这样的话函数有会非常复杂、麻烦的问题,提出一种新的基于PHP环境的磁盘的文件加载方法。
实施例一:
图1示出了本发明第一实施例提供的基于PHP环境的磁盘的文件加载方法的实现流程,详述如下:
在步骤S101中,获取类的名称,所述类的名称包括文件名和所述文件名对应的文件的路径信息。
具体的,所述类,在PHP5环境中,其内部可以包括常量(constant),属性(property)和方法(method),功能可以理解成类外部的常量,变量和函数,所述类的名称,在一般情况下,可以由编程开发人员自行命名。
但在加载函数自动加载未加载的函数时,需要根据类的名称得到函数所在的文件的名称,及文件名称与存储路径的映射关系,从而系统可以通过路径及文件名称,通过include或require加载包括需要使用的函数的所述文件。
本发明实施例所述类的名称,包括文件名和所述文件名对应的文件的路径信息。可以采用多种方式实现。
其中一种方式可将文件的完整的路径信息及文件名包括于类的名称中,将其中的路径信息中的不同级间的区别标识“/”,使用特征符取代,使得类的名称符合命名要求,所述特征符可以为“_”或者其它类似符号,采用特征符对路径中的文件夹的不同级进行区分的一个注意的地方就是,在对文件夹进行命名时,尽量避免使用上述特征符进行文件夹的命名。
所述文件名,由于加载的函数一般的扩展名称相同,如php扩展名等。因此,所述类的名称中包括的文件名,可以为不包括扩展的名的文件名。如index.php仅包括index即可。如原来的文件路径为:a/b/c.php,按照所述类的命名方式,其类的名称可以为:a_b_c,使其中包括的路径信息和文件名简单明了。
所述文件名对应的文件的路径信息,在路径较长,即文件的级数较深的情况下,如当前文件的路径为a/b/c/d/e/f.php,可以将路径信息取后面部分,即不包含根目录或者二级目录的那一部分路径信息,如当前文件的路径为a/b/c/d/e/f.php的情况下,类文件中包括的路径信息可以为:c_d_e_f,在后面对路径信息的解析过程中,由以根据所包括的路径信息在磁盘中查找包括此路径信息的根目录,或者在声明了目录或者根据目录、二级目录的情况下,直接将解析的目录信息与声明的目录信息合并,得到文件的完整的路径信息。这种方式的好处在于,通过声明或者查找,可以对于文件路径较长的情况下减少类的名称的长度,通过结合声明同样实现路径的解析。
在步骤S102中,解析所述类的名称,由所述类的名称解析得到包括文件名及所述文件名对应的文件的存储路径。
解析所述类的名称,根据类的名称,可以分为以下具体的解析过程:
将所述类的名称中提取文件名和所述文件名对应的文件的路径信息,判断所述文件名对应的文件的路径信息的第一级目录是否为磁盘的根目录。
如果所述文件名对应的文件的路径信息的第一级目录为磁盘的根目录,比如当前磁盘的根目录为“www”,那么判断解析的文件名对应的文件的路径信息的第一级文件夹名是否为“www”,如果是,则说明当前解析的路径为完整的存储路径,可以直接查找到相应的文件。
如果所述文件名对应的文件的路径信息的第一级目录不为磁盘的根目录,则需要根据当前解析的目录在磁盘中查找符合所述目录的文件夹,根据文件名确定所述文件夹下包含的文件。当然也可结合声明的根目录或者二级目录等,两者相结合得到完整的文件的存储路径。如在上面举例的文件的路径为a/b/c/d/e/f.php,其类的名称命名为:c_d_e_f,在程序中声明的根目录及二级目录名称为/a/b,因此,两者相结合,得到完整的路径信息:a/b/c/d/e/f.php。
在步骤S103中,根据所述文件的存储路径,查找所述文件名对应的文件,并加载所述文件。
根据得到的文件名和所述文件名对应的文件的存储路径,在所述存储路径中查找到所述文件,通过require或者include加载所述文件,从而有效的完成对文件的加载,不需要另外配置另外的加载函数的规则,而且通过类的名称可以直接、简单的进行类名的操作,能够有效提高加载效率。
实施例二:
如图2为本发明第二实施例提供的基于PHP环境的磁盘的文件加载方法的实现流程,详述如下:
在步骤S201中,将所述文件名和所述文件对应的文件的路径信息设置于所述类的名称之中。
获取所述文件的路径信息的级数;
判断所述文件的路径信息的级数是否大于预设的路径的阈值;
如果所述文件的路径信息的级数大于预设的路径的阈值,截取从所述文件向上的所述阈值对应的级数的路径,并通过特征符依次连接所述截取的路径中包含的文件夹名称和文件名称;
如果所述文件的路径信息的级数小于预设的路径的阈值,通过特征符依次连接所述文件的路径中包含的文件夹名称和文件名称。
如当前设置的路径的阈值为3,如果文件的路径的级数大于3,那么截取包括文件名的内层的3级的路径信息作为类的名称,如果文件的路径的级数小于或者等于3,那么直接以其完整的路径信息作为类的名称。所述路径的阈值可以根据类的名称进行灵活的设置,另外也可以根据部分文件夹的名称过长的情况,灵活调整路径的阈值。
在步骤S202中,获取类的名称,所述类的名称包括文件名和所述文件名对应的文件的路径信息。
根据步骤S101中设定的类的名称,在系统执行过程中获取类的名称。所述类的名称可能包括文件的完整的路径信息,也可能包括文件的部分的路径信息。
在步骤S203中,声明所述文件所在磁盘中的部分目录路径。
在对文件进行加载前,获取所述声明信息,声明所述文件所在磁盘中的部分目录路径。其中部分目录路径可以包括根目录,在具体实施过程中,还可以包括二级目录或者直到三级目录等,本领域一般技术人员可以理解上述不并不一定严格限制其级数。
在步骤S204中,解析所述类的名称,根据所述声明的磁盘中的部分目录路径和解析得到的所述文件名对应的文件的路径信息,得到所述文件的完整存储路径。
根据声明的磁盘中的部分目录路径和解析得到的所述文件名对应的文件的路径信息,得到所述文件的完整存储路径。当然,在此步骤中还可包括对得到一级目录是否为根目录的判断,包括以下步骤:
由所述类的名称解析得到文件名和所述文件名对应的文件的路径信息;
判断所述文件名对应的文件的路径信息的第一级目录是否为磁盘的根目录;
如果所述文件的路径信息的第一级目录不是磁盘的根目录,则根据所述文件名对应的文件的路径信息查找得到所述文件的完整存储路径。
在步骤S205中,根据所述文件的存储路径,查找所述文件名对应的文件,并加载所述文件。
本发明实施例包括对类的名称进行设置,并且声明所述文件所在磁盘中的部分目录路径,这样通过声明的文件在磁盘中的根目录与解析的路径信息相结合,得到文件完整路径,使文件的加载效率更高。
实施例三:
图3为本发明第三实施例所提供的基于PHP环境的磁盘的文件加载装置的结构示意图,详述如下:
本发明实施例所述基于PHP环境的磁盘的文件加载装置,包括:
获取单元301,用于获取类的名称,所述类的名称包括文件名和所述文件名对应的文件的路径信息;
解析单元302,用于解析所述类的名称,由所述类的名称解析得到包括文件名及所述文件名对应的文件的存储路径;
加载单元303,用于根据所述文件的存储路径,查找所述文件名对应的文件,并加载所述文件。
在对文件进行加载前,还可包括设置单元304,用于将所述文件名和所述文件对应的文件的路径信息设置于所述类的名称之中。
所述设置单元304包括:
获取子单元3041,用于获取所述文件的路径信息的级数;
第一判断子单元3042,用于判断所述文件的路径信息的级数是否大于预设的路径的阈值;
截取连接子单元3043,用于如果所述文件的路径信息的级数大于预设的路径的阈值,截取从所述文件向上的所述阈值对应的级数的路径,并通过特征符依次连接所述截取的路径中包含的文件夹名称和文件名称;
连接子单元3044,用于如果所述文件的路径信息的级数小于预设的路径的阈值,通过特征符依次连接所述文件的路径中包含的文件夹名称和文件名称。
所述解析单元302可包括:
解析子单元3021,用于由所述类的名称解析得到文件名和所述文件名对应的文件的路径信息;
第二判断子单元3022,用于判断所述文件名对应的文件的路径信息的第一级目录是否为磁盘的根目录;
查找子单元3023,用于如果所述文件的路径信息的第一级目录不是磁盘的根目录,则根据所述文件名对应的文件的路径信息查找得到所述文件的完整存储路径。
另外,本发明所述装置还可包括声明单元305,用于声明所述文件所在磁盘中的部分目录路径;
所述查找子单元3023用于根据所述声明的磁盘中的部分目录路径和解析得到的所述文件名对应的文件的路径信息,得到所述文件的完整存储路径。
本发明实施例所述装置与实施例一、二实施例二所述方法相对应,在此不作重复赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于PHP环境的磁盘的文件加载方法,其特征在于,所述方法包括:
获取类的名称,所述类的名称包括文件名和所述文件名对应的文件的路径信息;
解析所述类的名称,由所述类的名称解析得到包括文件名及所述文件名对应的文件的存储路径;
根据所述文件的存储路径,查找所述文件名对应的文件,并加载所述文件。
2.根据权利要求1所述方法,其特征在于,所述方法还包括:
将所述文件名和所述文件对应的文件的路径信息设置于所述类的名称之中。
3.根据权利要求2所述方法,其特征在于,所述将所述文件名和所述文件对应的文件的路径信息设置于所述类的名称之中步骤包括:
获取所述文件的路径信息的级数;
判断所述文件的路径信息的级数是否大于预设的路径的阈值;
如果所述文件的路径信息的级数大于预设的路径的阈值,截取从所述文件向上的所述阈值对应的级数的路径,并通过特征符依次连接所述截取的路径中包含的文件夹名称和文件名称;
如果所述文件的路径信息的级数小于预设的路径的阈值,通过特征符依次连接所述文件的路径中包含的文件夹名称和文件名称。
4.根据权利要求1所述方法,其特征在于,所述解析所述类的名称,由所述类的名称解析得到包括文件名及所述文件名对应的文件的存储路径步骤包括:
由所述类的名称解析得到文件名和所述文件名对应的文件的路径信息;
判断所述文件名对应的文件的路径信息的第一级目录是否为磁盘的根目录;
如果所述文件的路径信息的第一级目录不是磁盘的根目录,则根据所述文件名对应的文件的路径信息查找得到所述文件的完整存储路径。
5.根据权利要求4所述方法,其特征在于,在所述解析所述类的名称,由所述类的名称解析得到包括文件名及所述文件名对应的文件的存储路径步骤前,所述方法还包括:
声明所述文件所在磁盘中的部分目录路径;
所述根据所述文件名对应的文件的路径信息查找得到所述文件的完整存储路径步骤为:
根据所述声明的磁盘中的部分目录路径和解析得到的所述文件名对应的文件的路径信息,得到所述文件的完整存储路径。
6.一种基于PHP环境的磁盘的文件加载装置,其特征在于,所述装置包括:
获取单元,用于获取类的名称,所述类的名称包括文件名和所述文件名对应的文件的路径信息;
解析单元,用于解析所述类的名称,由所述类的名称解析得到包括文件名及所述文件名对应的文件的存储路径;
加载单元,用于根据所述文件的存储路径,查找所述文件名对应的文件,并加载所述文件。
7.根据权利要求6所述装置,其特征在于,所述装置还包括:
设置单元,用于将所述文件名和所述文件对应的文件的路径信息设置于所述类的名称之中。
8.根据权利要求7所述装置,其特征在于,所述设置单元包括:
获取子单元,用于获取所述文件的路径信息的级数;
第一判断子单元,用于判断所述文件的路径信息的级数是否大于预设的路径的阈值;
截取连接子单元,用于如果所述文件的路径信息的级数大于预设的路径的阈值,截取从所述文件向上的所述阈值对应的级数的路径,并通过特征符依次连接所述截取的路径中包含的文件夹名称和文件名称;
连接子单元,用于如果所述文件的路径信息的级数小于预设的路径的阈值,通过特征符依次连接所述文件的路径中包含的文件夹名称和文件名称。
9.根据权利要求6所述装置,其特征在于,所述解析单元包括:
解析子单元中,用于由所述类的名称解析得到文件名和所述文件名对应的文件的路径信息;
第二判断子单元,用于判断所述文件名对应的文件的路径信息的第一级目录是否为磁盘的根目录;
查找子单元,用于如果所述文件的路径信息的第一级目录不是磁盘的根目录,则根据所述文件名对应的文件的路径信息查找得到所述文件的完整存储路径。
10.根据权利要求9所述装置,其特征在于,所述装置还包括:
声明单元,用于声明所述文件所在磁盘中的部分目录路径;
所述查找子单元用于根据所述声明的磁盘中的部分目录路径和解析得到的所述文件名对应的文件的路径信息,得到所述文件的完整存储路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310308852.2A CN104331299A (zh) | 2013-07-22 | 2013-07-22 | 基于php环境的磁盘的文件加载方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310308852.2A CN104331299A (zh) | 2013-07-22 | 2013-07-22 | 基于php环境的磁盘的文件加载方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104331299A true CN104331299A (zh) | 2015-02-04 |
Family
ID=52406033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310308852.2A Pending CN104331299A (zh) | 2013-07-22 | 2013-07-22 | 基于php环境的磁盘的文件加载方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104331299A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106873984A (zh) * | 2017-01-13 | 2017-06-20 | 努比亚技术有限公司 | 一种自定义脚本绘制终端及方法 |
CN108958732A (zh) * | 2018-06-28 | 2018-12-07 | 上海恺英网络科技有限公司 | 一种基于php的数据加载方法及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101115180A (zh) * | 2007-09-07 | 2008-01-30 | 中兴通讯股份有限公司 | 一种电子节目菜单系统及其功能模块动态加载运行方法 |
CN101576908A (zh) * | 2009-03-12 | 2009-11-11 | 北京中星微电子有限公司 | 一种通过文件名获取文件句柄的方法及系统 |
-
2013
- 2013-07-22 CN CN201310308852.2A patent/CN104331299A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101115180A (zh) * | 2007-09-07 | 2008-01-30 | 中兴通讯股份有限公司 | 一种电子节目菜单系统及其功能模块动态加载运行方法 |
CN101576908A (zh) * | 2009-03-12 | 2009-11-11 | 北京中星微电子有限公司 | 一种通过文件名获取文件句柄的方法及系统 |
Non-Patent Citations (2)
Title |
---|
MATT ZANDSTRA 编著 陈浩等译: "《深入PHP面向对象、模式与实践(第3版)》", 31 July 2011 * |
佚名: ""PHP的类自动加载机制"", 《HTTPS://BLOG.CSDN.NET/HGUISU/ARTICLE/DETAILS/7463333》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106873984A (zh) * | 2017-01-13 | 2017-06-20 | 努比亚技术有限公司 | 一种自定义脚本绘制终端及方法 |
CN108958732A (zh) * | 2018-06-28 | 2018-12-07 | 上海恺英网络科技有限公司 | 一种基于php的数据加载方法及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109086204B (zh) | 节点关系树建立、页面标记和识别方法、装置和存储介质 | |
CN102279749B (zh) | 一种代码归并方法和设备 | |
CN105608142B (zh) | 一种Json数据的存储方法及装置 | |
JP5759915B2 (ja) | ファイルリスト生成方法及びシステム並びにプログラム、ファイルリスト生成装置 | |
JP2005078612A (ja) | ファイル共有システム及びファイル共有装置間のファイル移行方法 | |
KR20080060117A (ko) | 파일 시스템 장치 및 그 파일 시스템의 파일 저장 및 파일 탐색 방법 | |
CN110807697A (zh) | 股份公司的实际控制人的确定方法、装置及设备 | |
CN104899016A (zh) | 调用堆栈关系获取方法及装置 | |
CN108268609A (zh) | 一种文件路径的建立、访问方法和装置 | |
CN103019707A (zh) | 调用栈的解析处理方法及装置 | |
US9128962B2 (en) | View based table replacement for applications | |
KR20130139724A (ko) | 컴퓨팅 시스템 및 그 실행 제어 방법과, 그 실행 제어 프로그램을 기록한 기록 매체 | |
CN112052413B (zh) | Url模糊匹配方法、装置和系统 | |
CN104331299A (zh) | 基于php环境的磁盘的文件加载方法和装置 | |
US20140149341A1 (en) | System and method for refining address database for improving performance of automated mail sorting machine | |
CN103744883A (zh) | 一种快速选取信息碎片的方法及系统 | |
CN111126965B (zh) | 审核规则优化方法、装置、计算机设备以及存储介质 | |
US10127208B2 (en) | Document conversion device, document conversion method, and recording medium | |
CN110109884A (zh) | 一种文件读取方法、装置、设备及介质 | |
CN106557572A (zh) | 一种安卓应用程序文件的提取方法及系统 | |
US9507794B2 (en) | Method and apparatus for distributed processing of file | |
CN103246718A (zh) | 文件访问方法、装置和设备 | |
US9626371B2 (en) | Attribute selectable file operation | |
CN115599295A (zh) | 一种存储系统的节点扩容方法和装置 | |
CN111143450B (zh) | 导入数据的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150204 |
|
RJ01 | Rejection of invention patent application after publication |