很长一段时间我都遇到了问题 - 我应该重用一小部分代码吗?如果是这样,我应该怎么做才能这样做才是最好的做法。
我对小代码的意思是:
if (!is_array($table)) {
$table = array($table);
}
或
$x = explode("\n", $file_content);
$lines = array();
for ($i=0, $c = count($x); $i<$c; ++$i) {
$x[$i] = trim($x[$i]);
if ($x[$i] == '') {
continue;
}
$lines[] = $x[$i];
}
这些微小的代码部分可以在一个项目中的许多类中使用,但其中一些也在许多项目中使用。
我认为有很多可能的解决方案:
我认为所有这些解决方案都有其优点和缺点。
问题:我应该使用哪种方法(如果有的话)来重复使用此类代码,为什么这种方法在您看来是最好的方法?
答案 0 :(得分:2)
我认为“最佳方式”取决于许多因素,包括您的应用程序使用的技术(程序,OOP),运行的PHP版本等。例如,特征是有趣且有用的,但它们仅在以后可用php 5.4.0所以使用这个工具来分组你的代码片段,你将无法在早期PHP版本上运行的系统中重用它们。另一方面,如果您的应用程序使用OOP样式并且您在函数中组织了可恢复的小代码片段,那么它们的使用在OOP应用程序中可能看起来很尴尬,并且与特定类中的函数名称冲突。在这种情况下,我认为在类中对函数进行分组似乎更自然。
将所有内容放在一起,似乎类提供了更好的工具,用于按照上面的概述对可恢复的代码片段进行分组,即向后兼容早期的PHP版本,避免函数名称冲突等。)我个人主要用OOP编写代码,所以我有一个Util类,我将小函数分组,代表可重复的代码片段,这些代码片段彼此不直接相关,因此无法在其他类中进行逻辑分组。
答案 1 :(得分:1)
如前所述,特质是好事。但是一段时间后可能有点难以管理,而且它可能不会在任何地方得到支持。
我所做的是创建具有很多小静态函数的Tool类,例如:
class ArrayTools
{
static public function CheckArray($array)
{
if (!is_array($array))
{
$array = array($array);
}
return $array;
}
}
所以你可以用ArrayTools::CheckArray($array)
答案 2 :(得分:0)
如果您的代码主要涉及类和对象,请使用traits
。因为traits的概念专注于代码重用能力。
答案 3 :(得分:0)
以下是我在Plain PHP项目中使用的代码片段,这些代码片段用于各种框架的良好特性和最佳实践。
1。 以下代码用于检查您工作的环境,根据您可以设置一些全局变量的环境,错误报告等。
if(!defined('ENVIRONMENT')){
define('ENVIRONMENT','DEVELOPMENT');
}
if (defined('ENVIRONMENT'))
{
switch (ENVIRONMENT)
{
case 'DEVELOPMENT':
case 'TESTING':
$base_url = 'http://localhost/project_name/';
error_reporting(E_ALL);
break;
case 'PRODUCTION':
$base_url = 'http://hostname/project_name/';
error_reporting(0);
break;
default:
exit('The application environment is not set correctly.');
}
}
2
/* This function is used to PRINT the ARRAY data in the pre formatted manner */
if (!function_exists('pr')) {
function pr($data) {
echo '<pre>', print_r($data), '</pre>';
}
}
3
/* This function is used to Sanitize the user data and make data safe to insert into the database */
function sanitize($data) {
global $link;
$data = trim($data);
return htmlentities(strip_tags(mysqli_real_escape_string($link, $data)));
}
4
/* Used to get the difference of 2 arrays
Returns the array with difference
*/
function multi_diff($arr1,$arr2){
$result = array();
foreach ($arr1 as $k=>$v){
if(!isset($arr2[$k])){
$result[$k] = $v;
} else {
if(is_array($v) && is_array($arr2[$k])){
$diff = multi_diff($v, $arr2[$k]);
if(!empty($diff))
$result[$k] = $diff;
}
}
}
return $result;
}
5
/* This fnction is used to generate the random keys of specific length
Accepts parameter of certain length if not specified it will generate 20 bit length automatically
*/
function generate_random_key($length = 20) {
//Initializing the varialble
$keystring = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
$random_key = '';
for ($i = 0; $i < $length; $i++) {
$random_key.=$keystring[rand(0, strlen($keystring) - 1)];
}
//Return the randomly generated key
return $random_key;
}
6
/* This function outputs the errors in ul>li format with unstyled
* To get the bullets styling remove class='list-unstyled' in <ul> tag */
function output_errors($errors){
$output = array();
foreach ($errors as $error) {
$output[] = '<li>'.$error.'</li>';
}
return '<ul class="list-unstyled">'.implode('', $output).'</ul>';
}
7
/* Checks whether the user is loggedin else will redirect to the protectect page */
function protected_page(){
if(is_loggedin() === false){
// header('Location: protected.php');
header('Location: logout.php');
exit();
}
}
8
/* If user tries to access the page directly accessing through the URL,
* If already loggedin then redirect him to any of the inner page
*/
function login_redirect(){
if(is_loggedin() === true){
header('Location: home.php');
}
}
9
/* This function is used to check whether the user exists or not */
function email_exists($email){
/* Your Code */
}
/* This function is used to check whether the user isActive or not */
function is_active($email){
/* Your Code */
}
/* This function will get the userid from the email */
function userid_from_email($email) {
/* Your Code */
}
/* This fucntion is used to login the user based on the email-id and password */
function login($email,$password){
/* Your Code */
}
/* Check whether the USER is loggedin or not */
function is_loggedin(){
return (isset($_SESSION['userid'])) ? true : false;
}
希望这会对你有所帮助。干杯!