首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在php中包含所有函数的文件?

问如何在php中包含所有函数的文件?
EN

Stack Overflow用户
提问于 2017-07-07 07:38:07
回答 4查看 1.5K关注 0票数 2

如您所知,我是php中的新手,我有一些问题(比如任何新的开始),我的问题是我不能将像config.php这样的文件包含到文件中的所有函数中。

我只有3份文件

在config.php中,我只是连接到mysqli中的数据库,变量是$connect。

在functions.php中只有一个简单的函数

代码语言:javascript
复制
include('config.php');
function rows($table){
    $gettables = mysqli_query($connect,"SELECT * FROM $table");
    $numrows = mysqli_num_rows($gettables);
    return($numrows);
}

在index.php中

代码语言:javascript
复制
include('functions.php');
echo rows('books');

问题是我不能让$connect变量从config.php在functions.php文件中的函数中工作。

编辑

当我在函数中包含config.php时,一切都会好起来的,如下所示

代码语言:javascript
复制
function rows($table){
include('config.php');
    $gettables = mysqli_query($connect,"SELECT * FROM $table");
    $numrows = mysqli_num_rows($gettables);
    return($numrows);
}

但是我不想这样做,因为我想为我拥有的所有函数包括一个config.php。

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-07-07 07:41:27

$connect存在于'config.php‘中。

在您的函数中,将$connect声明为“全局”,即:它存在于此函数的范围之外。

代码语言:javascript
复制
function rows($table){

    global $connect;

    $gettables = mysqli_query($connect,"SELECT * FROM $table");
    $numrows = mysqli_num_rows($gettables);
    return($numrows);
}
票数 4
EN

Stack Overflow用户

发布于 2017-07-07 07:52:18

有两种可能的方法是可行的。

1.将$connect作为第二个参数传递给函数

代码语言:javascript
复制
include('config.php');
function rows($table,$connnect){
    $gettables = mysqli_query($connect,"SELECT * FROM $table");
    $numrows = mysqli_num_rows($gettables);
    return($numrows);
}
  1. 将$connect声明为全局变量 函数行($table){全局$connect;$gettables = mysqli_query($connect,"SELECT * FROM $table");$numrows = mysqli_num_rows($gettables);返回($numrows);}

建议将$connect作为参数传递给建议使用全局变量的function.Not,参见此处的Are global variables in PHP considered bad practice? If so, why?

票数 4
EN

Stack Overflow用户

发布于 2017-07-07 07:56:39

问题是您在全局范围中声明了一个变量,但是在全局作用域中可用的东西在函数作用域中并不是自动可用的,除非您通过global $connect强制它可用,因为它有自己的警告。

global的一些替代方案将是。

1)使用单例类:

代码语言:javascript
复制
<?php
//File connect.php
class Connection {
    private static $connection = null;
    public static get() {
          if (self::$connection == null) { self::$connection = mysqli_connect(...); }
          return self::$connection;
    }
} 

并把它当作

代码语言:javascript
复制
include_once('connect.php');
function rows($table){
    $gettables = mysqli_query(Connection::get(),"SELECT * FROM $table");
    $numrows = mysqli_num_rows($gettables);
    return($numrows);
}

2)常量(不是最好的主意):

代码语言:javascript
复制
 <?php 
 //File config.php
 define('CONNECTION',mysqli_connect(...));

用作:

代码语言:javascript
复制
include_once('config.php');
function rows($table){
    $gettables = mysqli_query(CONNECTION,"SELECT * FROM $table");
    $numrows = mysqli_num_rows($gettables);
    return($numrows);
}

3)将它作为参数传递给函数(config.php就像现在一样):

代码语言:javascript
复制
function rows($connection, $table){
    $gettables = mysqli_query($connection,"SELECT * FROM $table");
    $numrows = mysqli_num_rows($gettables);
    return($numrows);
}

用作:

代码语言:javascript
复制
include('config.php');
include_once('functions.php');
echo rows($connection, 'books');

4)使文件像变量声明一样工作

代码语言:javascript
复制
<?php
//config.php 
return mysqli_connect(...);

用作:

代码语言:javascript
复制
function rows($table){
     $connect = include('config.php');
     $gettables = mysqli_query($connect,"SELECT * FROM $table");
     $numrows = mysqli_num_rows($gettables);
     return($numrows);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44965160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档