技术开发 频道

用PHP在对象语境外创建载入程序

  【IT168 技术】我们将在本文中解释如何创建一个小型,高效的文件加载类,这其中有些与众不同的地方在于,由于实施了静态递归载入方法,我们不再需要产生大量实例来包括锁定文件。

  用PHP创建能够加载指定文件的小型文件或资源对于许多程序员来说都是很容易的一件事情。但是,当你尝试向这些项目中添加有用特性时事情会变得更复杂,如递归文件搜索功能和异常处理功能等。这些都要求更多对象范例的相关知识以及掌握目前仅出现在PHP5中的性能。

  文件加载类具备"load()"方法可以直接执行递归功能。然而,需要在此强调的是有必要创建给类的示例以便包含确定的文件,除非,在这些例子中,加载方法是被静态调用。通过php在服务器上写入文件

  为了避免加载类的最终示例,我们可以声明所提及的"load()"方法的静态特性。因此,考虑到这一点,我们将"Loader"类的特性进行改进。想了解这些是如何在简单几个步骤里实现的吗?请看下文。

  观察下列代码,注意它的定义:

 

  < ?php

  
// define a recursive loader class

  class Loader

  {

  
private $file = '';

  
private $path = '';

  
// constructor (not implemented)

  
public function __construct(){}

  
// set file to load

  
public function set_file($file)

  {

  $this
->file = $file;

  }

  
// get file to load

  
public function get_file()

  {

  return $this
->file;

  }

  
// set path to load file

  
public function set_path($path)

  {

  $this
->path = $path;

  }

  
// get path to load file

  
public function get_path()

  {

  return $this
->path;

  }

  
// load recursively specified file

  
public function load($file, $path)

  {

  
if (file_exists($file))

  {

  require_once($file);

  return;

  }

  
else

  {

  
if (is_dir($path))

  {

  
if (FALSE !== ($handle = opendir($path)))

  {

  
// search recursively the specified file

  
while (FAlSE !== ($dir = readdir($handle)))

  {

  
if (strpos($dir, '.') === FALSE)

  {

  $path .
= '/' . $dir;

  $file
= $path . '/' . $this->file;

  $this
->load($file, $path);

  }

  }

  }

  closedir($handle);

  }

  }

  }

  }

 

  如果你仔细看看上面的"Loader"类,就会意识到除了设置器和接收器以外,真正其作用的其实是"load()"方法。该方法不止是通过"require_once()"PHP函数包含指定文件,它还通过使用简单的贯穿网页服务器上正确目录的递归法则执行了这一任务。

0
相关文章