PHP共享代码
问题描述:
我有一个类文件和类文件内的一些代码。 如何在多个页面上共享代码。 该代码解决了使用准备语句时获取结果集的用法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();
}
}
}
?>
答
您应该使用<?php include 'name_of_file.php'; ?>
答
你应该在你要使用的类中的任何页面类文件。你可以做到这一点通过以下方式:
<?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?)上有一定的影响。
祝你好运!
答
另一个很好的方法是使用类自动加载,在一个文件中保存很多include()函数来让所有的东西都能正常工作。
在这里看到更多为:http://php.net/manual/en/language.oop5.autoload.php
格式化你的代码时,请注意:可以很容易地阅读,甚至为你:-) – 2013-05-05 12:08:33