我在php中创建了一些可重用的对象,我想知道最好的构建它们的方法.下面我有两个不同方法的例子.
Class Uploader{
public $Filename;
public $Directory;
function upload(){
upload_file($this->Filename, $this->Directory)
}
}
// Then use the class above like this.
$u = new Uploader;
$u->Filename = 'foo.png'; // Set all the props
$u->Directory = 'bar/' // ^ ^ ^ ^
$u->upload(); // Then Execute
Run Code Online (Sandbox Code Playgroud)
或者这样做会更好......
Class Uploader {
function uploader($filename, $directory){
upload_file($filename, $directory)
}
}
// Then use the class above like this.
$u = new Uploader;
$u->uploader('foo.png', 'bar/') // Obviously much less code, All in One.
Run Code Online (Sandbox Code Playgroud)
在这两种方法中,哪一种更受欢迎,是它们的速度差异还是使用一种方法而不是另一种方式的增益?
我赞成示例#1,但这是他们最好的做法吗?
你为什么不能两个都做?
class Uploader
{
public
$filename,
$directory;
public function __construct( $name = '', $dir = '', $autoUpload = false )
{
$this->filename = $name;
$this->directory = $dir;
if ( $autoUpload )
{
$this->upload()
}
}
public function upload()
{
//check your values
...code...
upload_file( $this->filename, $this->directory );
}
}
Run Code Online (Sandbox Code Playgroud)
使用此技术,您可以使用以下命令自动上传文件:
$uploader = new Uploader( $name, $dir, true);
Run Code Online (Sandbox Code Playgroud)
或者您可以使用以下方法手动构造对象:
$uploader = new Uploader();
$uploader->filename = $name;
$uploader->directory = $dir;
$uploader->upload();
Run Code Online (Sandbox Code Playgroud)
方法一是经典的OO方法,其中您创建的对象包含数据和处理该数据的方法.方法二只是在类中创建函数的实用程序库.方法二无疑更快,但其方法中的OO较少.如果你要重复使用,我实际上会采用方法一.如果它是您想要的性能,请完全跳过使用类并编写功能库.
| 归档时间: |
|
| 查看次数: |
2427 次 |
| 最近记录: |