我是OOP & PHP的新手。我尽可能地遵循OOP方法,对于我的规范中的每个突出的“名词”,我都有一门课,这很好。面向对象和PHP运行时
但它让我思考编译和运行时。
如果我开发了一个综合的类,它具有相关的属性,setter和getter以及一系列方法,那么最终的类可以很容易地运行到几百行代码中。
如果我然后使用这个类,(例如)我只调用一个方法没有整个类被解析&转换和内存分配前执行?
我有这个权利吗?当然,程序方法会更有效率(包含内的函数)还是在实际运行时这是可忽略的?
我是OOP & PHP的新手。我尽可能地遵循OOP方法,对于我的规范中的每个突出的“名词”,我都有一门课,这很好。面向对象和PHP运行时
但它让我思考编译和运行时。
如果我开发了一个综合的类,它具有相关的属性,setter和getter以及一系列方法,那么最终的类可以很容易地运行到几百行代码中。
如果我然后使用这个类,(例如)我只调用一个方法没有整个类被解析&转换和内存分配前执行?
我有这个权利吗?当然,程序方法会更有效率(包含内的函数)还是在实际运行时这是可忽略的?
由于所有包含的文件都被解析,并且几百行代码并不多,但如果您希望的话,您可以简单地考虑一些适用于此类函数的静态辅助方法(如果可能的话)。
结合使用自动加载器,您可以真正地降低质量包括。
实例之前
一类,你总是有:
class Helper {
public static function createFolder() {
// some stuff
}
public static function myEncoder() {
// some stuff
}
public static function getDomElementByID() {
// some stuff
}
public static function cleanupString() {
// some stuff
}
}
举例算账:
分裂您的 “庞大” 的类,并尝试组在它的方法。
类的StringHelper
class StringHelper {
public static function cleanupString() {
// some stuff
}
}
类FilesystemHelper
class FilesystemHelper {
public static function createFolder() {
// some stuff
}
}
类DomHelper
class DomHelper {
public static function getDomElementByID() {
// some stuff
}
}
类EncodingHelper
class EncodingHelper {
public static function myEncoder() {
// some stuff
}
}
自动加载
创建一个自动加载类,这里更多的信息=>PHP Docs
自动加载器将只包括文件当你真正需要它。例如,如果您正在呼叫:
$stringHelper = new StringHelper();
// or
StringHelper::someStaticFunction();
真正让爆炸工作的是命名空间和自动加载器的组合。看看这里=>PHP Docs (namespaces)
至于
但它让我想起了编译和运行。
我觉得@马克comment是最中肯:
大多数基于类的系统使用自动加载,只包括类/正在积极要求来处理请求的文件.....
具有单一职责的原子类,从依赖注入容器自动加载将产生少量未使用的代码。
如果我然后使用这个类,由此(例如)我只调用一个方法没有整个类得到解析&转换和内存分配前执行?
冗长的类有时可以分成更小的类,这会限制用于执行单个方法的代码量。我认为这里的关键是single responsibility principle,它引发的类将需要他们运行被调用函数所需的最少资源。
你似乎认为包含包含函数的文件不需要解析和“转换”或分配内存 –
不,我确实没有,但它确实更有效地解析和转换一个函数而不是整个类? – JAMMac
文件被解析/ etc是否包含类或函数....假设你有一个包含20个函数的文件,但只能调用其中一个函数.... PHP仍然解析整个文件,而不仅仅是它的函数预测/猜测当你包含该文件时你将要调用 –