Table des matières
回复讨论(解决方案)
Maison développement back-end tutoriel php 如何调用类外的变量

如何调用类外的变量

Jun 23, 2016 pm 01:55 PM
变量 调用

a.php页面是数据链接变量
$dbhost = "localhost";
$dbname = "ffff";
$dbuser = "cccc";
$dbpwd = "123456";
$dbprefix = "user";
$db_language = "gbk";

b.php页面类里面为各种数据库的操作函数
require_once("../data/a.php");
class mydatabase{

// 链接数据库
  function opendata($database){
  请问在此方法中,怎么把类外的变量都获取
 }


//查询一条记录
  function ReadOne($database){
self::opendata($database);
$rs = mysql_query("SELECT * from fcc where id=1");
$row = mysql_fetch_array($rs); 
self::closedata();
return $row["date"];
 }

}


回复讨论(解决方案)

// 链接数据库
  function opendata($database){
   include("../data/a.php");
 }

或者定义成常量

你在类定义外面 require_once("../data/a.php")
将导致数据库相关参数变成全局变量,可能会覆盖掉同名变量
也可以通过 $GLOBALS 数组轻易的观察到

你要多看基础哦

require_once("../data/a.php");class mydatabase {    // 链接数据库    function opendata($database) {        //方法一        global $dbhost , $dbname , $dbuser , $dbpwd , $dbprefix , $db_language;        //方法二        require_once("../data/a.php");        //方法三        //在a.php把变量全部定义成常量        define('DB_HOST' , 'test');        //调用的时候直接 使用DB_HOST        echo DB_HOST;             }    //查询一条记录    function ReadOne($database) {        self::opendata($database);        $rs = mysql_query("SELECT * from fcc where id=1");        $row = mysql_fetch_array($rs);        self::closedata();        return $row["date"];             }}
Copier après la connexion

非常感谢以上两位高手,然后我想把获取变量的代码放在构造函数可以吗,因为我在别的方法里也会用到有些变量,那不是又要引用一次,但是构造函数的多个变量如何返回(return)呢?
class mydatabase{
private $myhost;
private $myuser;
private $mypwd;

public function __construct(){
require_once("../data/a.php");
$this->myhost=$dbhost;
$this->myuser=$dbuser;
$this->mypwd=$dbpwd;
return $this->myhost; 
  请问这里多个变量如何返回呢,测试如果没有return的话,别的方法获取不到
//echo $dbhost;
}

function opendata($database){
$this->__construct();
$linkid = mysql_connect($this->myhost, $this->myuser, $this->mypwd);
}

}

建议a.php的那些变量写进一个同一个数组,也可改成function 然后return这个数组
命名污染 有时候挺恶心的

一般这些配置信息最好变成常量

非常感谢以上两位高手,然后我想把获取变量的代码放在构造函数可以吗,因为我在别的方法里也会用到有些变量,那不是又要引用一次,但是构造函数的多个变量如何返回(return)呢?
class mydatabase{
private $myhost;
private $myuser;
private $mypwd;

public function __construct(){
require_once("../data/a.php");
$this->myhost=$dbhost;
$this->myuser=$dbuser;
$this->mypwd=$dbpwd;
return $this->myhost; 
  请问这里多个变量如何返回呢,测试如果没有return的话,别的方法获取不到
//echo $dbhost;
}

function opendata($database){
$this->__construct();
$linkid = mysql_connect($this->myhost, $this->myuser, $this->mypwd);
}

}


第一种方法,用常量,这样在任何地方都可以使用了
../data/a.php
<?php    define('MYHOST', 'localhost');    define('MYUSER', 'cccc');    define('MYPWD', '123456');?>
Copier après la connexion

<?phprequire_once("../data/a.php");class mydatabase{    private $myhost;    private $myuser;    private $mypwd;    public function __construct(){        $this->myhost = MYHOST;        $this->myuser = MYUSER;        $this->mypwd = MYPWD;    }    function opendata($database){        $linkid = mysql_connect($this->myhost, $this->myuser, $this->mypwd);    }}?>
Copier après la connexion


第二种,用config数组
../data/a.php
<?phpreturn array(    'myhost' => 'localhost',    'myuser' => 'cccc',    'mypwd' => '123456');
Copier après la connexion

<?phpclass mydatabase{    private $dbConfig = array();    public function __construct(){        $this->dbConfig = require_once("../data/a.php");    }    function opendata($database){        $this->__construct();        $linkid = mysql_connect($this->dbConfig['myhost'], $this->dbConfig['myuser'], $this->dbConfig['mypwd']);    }}?>
Copier après la connexion

to fdipzone:
我按你第二个方法用数组,然后有点问题,调试的时候在构造函数最后输出数组print_r($this->dbConfig); 
输出结果为:Array ( [myhost] => localhost [myuser] => cccc [mypwd] => 123456 ) Array ( [myhost] => [myuser] => [mypwd] => )
输出为两个数组,第一个正常,第个值为空,
然后我再在方法opendata中输出数组:$this->__construct(); print_r($this->dbConfig); 此方法中输出只显示:Array

求解?

to fdipzone:
经再次测试,您的第二个方法用数组,把require_once改成include,然后一切正常,问题解决,这是为何??

#6 第二方案的代码是错误的!
虽然是示例代码,但既然是教人家怎么做,怎么说也得是经过测试的吧?

1、载入参数使用了 require_once,这就表示被加载的数据只会被加载一次
那么,当需要实例化两个 mydatabase 时,就只有第一个能获得参数
2、在 opendata 执行了 $this->__construct() 基于错误1,当执行 mydatabase 方法是,由于未能加载参数文件,将导致数据库连接不上

正确的写法是

class mydatabase{  private $linkid;  public function __construct(){    $dbConfig = include("../data/a.php");    $linkid = mysql_connect($dbConfig['myhost'], $dbConfig['myuser'], $dbConfig['mypwd']);  }  function opendata($database, $charset='utf8'){    mysql_select_db($database, $this->linkid);    mysql_query("set names $charset", $this->linkid);  }}
Copier après la connexion

1、参数文件文件敏感,不应保存在对象中。需要时加载,用完就丢
2、一个数据库类只对应一个数据库连接,所以数据库连接应在构造函数中完成
3、opendata 方法只负责选择数据库和字符集设置,任务单一

特此感谢版主和各们高手的热情帮助,非常非常感谢各位!!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Un guide d'utilisation des variables d'environnement Windows 11 et 10 pour le profilage Un guide d'utilisation des variables d'environnement Windows 11 et 10 pour le profilage Nov 01, 2023 pm 08:13 PM

Les variables d'environnement sont le chemin d'accès à l'emplacement (ou à l'environnement) où les applications et les programmes s'exécutent. Ils peuvent être créés, édités, gérés ou supprimés par l'utilisateur et s'avèrent utiles lors de la gestion du comportement de certains processus. Voici comment créer un fichier de configuration pour gérer plusieurs variables simultanément sans avoir à les modifier individuellement sous Windows. Comment utiliser les profils dans les variables d'environnement Windows 11 et 10 Sous Windows, il existe deux ensembles de variables d'environnement : les variables utilisateur (s'appliquent à l'utilisateur actuel) et les variables système (s'appliquent globalement). Cependant, en utilisant un outil comme PowerToys, vous pouvez créer un fichier de configuration distinct pour ajouter des variables nouvelles et existantes et les gérer toutes en même temps. Voici comment procéder : Étape 1 : Installer PowerToysPowerTo

Comment utiliser Python pour appeler l'API Baidu Map afin d'implémenter la fonction de requête de localisation géographique ? Comment utiliser Python pour appeler l'API Baidu Map afin d'implémenter la fonction de requête de localisation géographique ? Jul 31, 2023 pm 03:01 PM

Comment utiliser Python pour appeler l'API Baidu Map afin d'implémenter la fonction de requête de localisation géographique ? Avec le développement d’Internet, l’acquisition et l’utilisation d’informations de localisation géographique deviennent de plus en plus importantes. Baidu Maps est une application cartographique très courante et pratique qui fournit une multitude de services de requête de localisation géographique. Cet article expliquera comment utiliser Python pour appeler l'API Baidu Map afin d'implémenter la fonction de requête de localisation géographique et joindra un exemple de code. Demander un compte de développeur et une application Baidu Map Tout d'abord, vous devez disposer d'un compte de développeur Baidu Map et créer une application. Se connecter

Mode strict pour les variables en PHP7 : comment réduire les bugs potentiels ? Mode strict pour les variables en PHP7 : comment réduire les bugs potentiels ? Oct 19, 2023 am 10:01 AM

Le mode strict a été introduit dans PHP7, ce qui peut aider les développeurs à réduire les erreurs potentielles. Cet article expliquera ce qu'est le mode strict et comment utiliser le mode strict en PHP7 pour réduire les erreurs. Parallèlement, l'application du mode strict sera démontrée à travers des exemples de code. 1. Qu’est-ce que le mode strict ? Le mode strict est une fonctionnalité de PHP7 qui peut aider les développeurs à écrire du code plus standardisé et à réduire certaines erreurs courantes. En mode strict, il y aura des restrictions et une détection strictes sur la déclaration des variables, la vérification du type, l'appel de fonction, etc. Passer

Que sont les variables d'instance en Java Que sont les variables d'instance en Java Feb 19, 2024 pm 07:55 PM

Les variables d'instance en Java font référence aux variables définies dans la classe, et non dans la méthode ou le constructeur. Les variables d'instance sont également appelées variables membres. Chaque instance d'une classe possède sa propre copie de la variable d'instance. Les variables d'instance sont initialisées lors de la création de l'objet et leur état est enregistré et conservé tout au long de la durée de vie de l'objet. Les définitions de variables d'instance sont généralement placées en haut de la classe et peuvent être déclarées avec n'importe quel modificateur d'accès, qui peut être public, privé, protégé ou le modificateur d'accès par défaut. Cela dépend de ce que nous voulons que ce soit

Comment obtenir des variables de la méthode PHP en utilisant Ajax ? Comment obtenir des variables de la méthode PHP en utilisant Ajax ? Mar 09, 2024 pm 05:36 PM

L'utilisation d'Ajax pour obtenir des variables à partir de méthodes PHP est un scénario courant dans le développement Web. Grâce à Ajax, la page peut être obtenue dynamiquement sans actualiser les données. Dans cet article, nous présenterons comment utiliser Ajax pour obtenir des variables à partir de méthodes PHP et fournirons des exemples de code spécifiques. Tout d’abord, nous devons écrire un fichier PHP pour gérer la requête Ajax et renvoyer les variables requises. Voici un exemple de code pour un simple fichier PHP getData.php :

Carte mentale de la syntaxe Python : compréhension approfondie de la structure du code Carte mentale de la syntaxe Python : compréhension approfondie de la structure du code Feb 21, 2024 am 09:00 AM

Python est largement utilisé dans un large éventail de domaines grâce à sa syntaxe simple et facile à lire. Il est crucial de maîtriser la structure de base de la syntaxe Python, à la fois pour améliorer l’efficacité de la programmation et pour acquérir une compréhension approfondie du fonctionnement du code. À cette fin, cet article fournit une carte mentale complète détaillant divers aspects de la syntaxe Python. Variables et types de données Les variables sont des conteneurs utilisés pour stocker des données en Python. La carte mentale affiche les types de données Python courants, notamment les entiers, les nombres à virgule flottante, les chaînes, les valeurs booléennes et les listes. Chaque type de données a ses propres caractéristiques et méthodes de fonctionnement. Opérateurs Les opérateurs sont utilisés pour effectuer diverses opérations sur les types de données. La carte mentale couvre les différents types d'opérateurs en Python, tels que les opérateurs arithmétiques, ratio

Introduction à la fonction PHP — is_string() : Vérifiez si la variable est une chaîne Introduction à la fonction PHP — is_string() : Vérifiez si la variable est une chaîne Jul 24, 2023 pm 09:33 PM

Introduction à la fonction PHP — strpos() : Vérifier si une variable est une chaîne En PHP, is_string() est une fonction très utile, qui est utilisée pour vérifier si une variable est une chaîne. Lorsque nous devons déterminer si une variable est une chaîne, la fonction is_string() peut nous aider à atteindre facilement cet objectif. Ci-dessous, nous apprendrons comment utiliser la fonction is_string() et fournirons quelques exemples de code associés. La syntaxe de la fonction is_string() est très simple. il suffit qu'il

Compétences en appel de caméra PHP : Comment implémenter la commutation multi-caméras Compétences en appel de caméra PHP : Comment implémenter la commutation multi-caméras Aug 04, 2023 pm 07:07 PM

Compétences en matière d'appel de caméra PHP : comment basculer entre plusieurs caméras. Les applications de caméra sont devenues une partie importante de nombreuses applications Web, telles que la vidéoconférence, la surveillance en temps réel, etc. En PHP, nous pouvons utiliser diverses technologies pour appeler et faire fonctionner la caméra. Cet article se concentrera sur la façon de mettre en œuvre la commutation multi-caméras et fournira des exemples de code pour aider les lecteurs à mieux comprendre. Bases de l'appel de caméra En PHP, nous pouvons appeler la caméra en appelant l'API JavaScript. Plus précisément, nous

See all articles