2013-05-05 168 views
-5

我有一个类文件和类文件内的一些代码。 如何在多个页面上共享代码。 该代码解决了使用准备语句时获取结果集的用法PHP共享代码

代码是这样的。我如何重用函数mps_fetch_assoc。我只需要在一个地方的代码。

<?php 

//http://localhost:8080/altenaontw/index.php?-action=showclient 
class actions_showclient 
{ 

    // find here http://www.meetup.com/austinphp/messages/boards/thread/2022681 
    private function mps_fetch_assoc(&$stmt) 
    { 
     $meta = $stmt->result_metadata(); 
     $retval[] = &$stmt; 
     $tmp; 
     $names; 
     while ($field = $meta->fetch_field()) 
     { 
      $names[] = $field->name; 
     } 
     $tmp = $names; 
     for ($c = 0; $c < count($names); $c++) 
     { 
      $retval[] = &$tmp[$c]; 
     } 
     call_user_func_array("mysqli_stmt_bind_result", $retval); 
     if ($stmt->fetch()) 
     { 
      $assoc_array; 
      for ($c = 0; $c < count($names); $c++) 
      { 
       $assoc_array[$names[$c]] = $retval[$c + 1]; 
      } 
      return $assoc_array; 
     } 
     else 
     { 
      return FALSE; 
     } 
    } 

    function handle($params) 
    { 
     header('Content-type: text/json; charset="UTF-8"'); 
     $user = Dataface_AuthenticationTool::getInstance()->getLoggedInUser(); 
     if (!$user) 
     { 
      return Dataface_Error::permissionDenied("U heeft geen toegang tot deze actie."); 
     } 

     $db = Dataface_Application::getInstance()->_conf['_database']; 
     echo ($db['host']); 

     //$mysqli = new mysqli($db['host'], $db['user'], "", $db['name']); 
     $mysqli = mysqli_connect($db['host'], $db['user'], "", $db['name']); 
     /* check connection */ 
     if ($mysqli->connect_errno) 
     { 
      printf("Connect failed: %s\n", $mysqli->connect_error); 
      exit(); 
     } 

     $sql = 'SELECT * from client'; 
     $stmt = $mysqli->prepare($sql); 
     if ($stmt) 
     { 
      $result = $stmt->execute(); 
      if (!$result) 
      { 
       echo "[" . json_encode(array('dberror' => 'db_error:' . mysql_error())) . "]"; 
       return; 
      } 

      $rows = array(); 
      while ($row = $this->mps_fetch_assoc($stmt)) 
      { 
       $rows[] = $row; 
      } 

      print json_encode($rows); 
      $mysqli->close(); 
     } 
    } 

} 

?> 
+0

格式化你的代码时,请注意:可以很容易地阅读,甚至为你:-) – 2013-05-05 12:08:33

回答

0

您应该使用<?php include 'name_of_file.php'; ?>

0

你应该在你要使用的类中的任何页面类文件。你可以做到这一点通过以下方式:

<?php include 'file_to_include.php'; ?> 

此后,每当你打算调用该函数没有创建新的对象,你应该做这样的事情:

<?php actions_showclient::mps_fetch_assoc($variable); ?> 

如果您将添加“__construct”函数给你的类,你可以用不同的方式调用函数,但我建议你尝试在www.codeacademy.com上学习几节课。他们会教你使用课程的基础知识。

另外,请确保你希望你的函数为私人,因为这有当你能够调用它(检查这个以了解更多信息:What is the difference between public, private, and protected?)上有一定的影响。

祝你好运!