ホームページ バックエンド開発 PHPチュートリアル クラス外で変数を呼び出す方法

クラス外で変数を呼び出す方法

Jun 23, 2016 pm 01:55 PM
変数 移行

a.php ページはデータリンク変数です
$dbhost = "localhost";
$dbuser = "cccc";
$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);
return $row["date"] }




ディスカッションへの返信(解決策)

// データベースをリンクする

function opendata($database){ include("../data/a.php")
}

または定数として定義する


You Outsideクラス定義 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"];             }}
ログイン後にコピー


上記の 2 人の専門家に感謝します。次に、変数を取得するコードをコンストラクターに置きたいと思います。他のメソッドでもいくつかの変数を使用するため、やめてください。もう一度引用する必要がありますが、コンストラクターの複数の変数を返すにはどうすればよいでしょうか?
クラス mydatabase{

プライベート $myuser;


パブリック関数 __construct(){

$this->myhost = $dbhost;

$this->myuser=$dbpwd;
return $this->myhost; テストで複数の変数を返すにはどうすればよいですか? , 他の方法では取得できません
//echo $dbhost;
}

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

a.php の変数を同じ配列に書き込むか、それを関数に変更して返すことをお勧めします。配列
名前付けの汚染は時々非常に嫌なものです

一般に、これらの設定情報を定数に変換するのが最善です


上記の 2 人の専門家に感謝します。次に、変数を取得するコードをコンストラクターに入れたいと思います。他のメソッドでもいくつかの変数を使用しますが、それを再度参照する必要があるという意味ではありませんが、コンストラクターの複数の変数を返すにはどうすればよいでしょうか。
クラス mydatabase{
プライベート $myuser;

パブリック関数 __construct(){

$this->myhost = $dbhost;

$this->myuser=$dbpwd;
return $this->myhost; テストで複数の変数を返すにはどうすればよいですか? , 他の方法では取得できません

//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');?>
ログイン後にコピー

<?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);    }}?>
ログイン後にコピー



2番目に、config arrayを使用します


../data/a.php

<?phpreturn array(    'myhost' => 'localhost',    'myuser' => 'cccc',    'mypwd' => '123456');
ログイン後にコピー

<?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']);    }}?>
ログイン後にコピー

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);  }}
ログイン後にコピー

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

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11 および 10 の環境変数をプロファイリングに使用するためのガイド Windows 11 および 10 の環境変数をプロファイリングに使用するためのガイド Nov 01, 2023 pm 08:13 PM

環境変数は、アプリケーションやプログラムが実行される場所 (または環境) へのパスです。ユーザーはこれらを作成、編集、管理、削除でき、特定のプロセスの動作を管理する場合に便利です。ここでは、Windows で複数の変数を個別に編集することなく、複数の変数を同時に管理するための構成ファイルを作成する方法を説明します。環境変数でプロファイルを使用する方法 Windows 11 および 10 Windows には、ユーザー変数 (現在のユーザーに適用) とシステム変数 (グローバルに適用) の 2 つの環境変数セットがあります。ただし、PowerToys などのツールを使用すると、別の構成ファイルを作成して新しい変数と既存の変数を追加し、それらをすべて一度に管理できます。方法は次のとおりです: ステップ 1: PowerToysPowerTo をインストールする

Python を使用して Baidu Map API を呼び出し、地理的位置のクエリ機能を実装するにはどうすればよいですか? Python を使用して Baidu Map API を呼び出し、地理的位置のクエリ機能を実装するにはどうすればよいですか? Jul 31, 2023 pm 03:01 PM

Python を使用して Baidu Map API を呼び出し、地理的位置のクエリ機能を実装するにはどうすればよいですか?インターネットの発展に伴い、地理的位置情報の取得と活用はますます重要になっています。 Baidu Maps は、豊富な地理的位置クエリ サービスを提供する、非常に一般的で実用的な地図アプリケーションです。この記事では、Python を使用して Baidu Map API を呼び出し、地理的位置のクエリ機能を実装する方法を紹介し、コード例を添付します。 Baidu Map 開発者アカウントとアプリケーションの申請 まず、Baidu Map 開発者アカウントを取得し、アプリケーションを作成する必要があります。ログイン

PHP7 の変数の厳密モード: 潜在的なバグを減らすには? PHP7 の変数の厳密モード: 潜在的なバグを減らすには? Oct 19, 2023 am 10:01 AM

PHP7 では Strict モードが導入され、開発者が潜在的なエラーを減らすのに役立ちます。この記事では、厳密モードとは何か、および PHP7 で厳密モードを使用してエラーを減らす方法について説明します。同時に、コード例を通じて厳密モードの適用を示します。 1.ストリクトモードとは何ですか? Strict モードは、開発者がより標準化されたコードを作成し、いくつかの一般的なエラーを減らすのに役立つ PHP7 の機能です。厳密モードでは、変数宣言、型チェック、関数呼び出しなどに厳密な制限と検出が行われます。合格

Javaのインスタンス変数とは何ですか Javaのインスタンス変数とは何ですか Feb 19, 2024 pm 07:55 PM

Java のインスタンス変数は、メソッドやコンストラクターではなく、クラスで定義された変数を指します。インスタンス変数はメンバー変数とも呼ばれ、クラスの各インスタンスにはインスタンス変数の独自のコピーがあります。インスタンス変数はオブジェクトの作成時に初期化され、その状態はオブジェクトの存続期間全体にわたって保存および維持されます。インスタンス変数定義は通常、クラスの先頭に配置され、パブリック、プライベート、プロテクト、またはデフォルトのアクセス修飾子など、任意のアクセス修飾子を使用して宣言できます。それは私たちがこれをどうしたいかによって決まります

PHP 関数の紹介 - is_string(): 変数が文字列かどうかを確認する PHP 関数の紹介 - is_string(): 変数が文字列かどうかを確認する Jul 24, 2023 pm 09:33 PM

PHP 関数の紹介 - strpos(): 変数が文字列であるかどうかを確認する PHP では、is_string() は変数が文字列であるかどうかを確認するために使用される非常に便利な関数です。変数が文字列であるかどうかを判断する必要がある場合、 is_string() 関数を使用すると、この目標を簡単に達成できます。以下では、is_string() 関数の使用方法を学び、関連するコード例をいくつか示します。 is_string() 関数の構文は非常に単純です。必要なのはそれだけです

Ajaxを使用してPHPメソッドから変数を取得するにはどうすればよいですか? Ajaxを使用してPHPメソッドから変数を取得するにはどうすればよいですか? Mar 09, 2024 pm 05:36 PM

Ajax を使用して PHP メソッドから変数を取得することは、Web 開発では一般的なシナリオであり、Ajax を使用すると、データを更新せずにページを動的に取得できます。この記事では、Ajax を使用して PHP メソッドから変数を取得する方法と、具体的なコード例を紹介します。まず、Ajax リクエストを処理し、必要な変数を返すための PHP ファイルを作成する必要があります。以下は、単純な PHP ファイル getData.php のサンプル コードです。

PHP カメラ呼び出しスキル: マルチカメラ切り替えの実装方法 PHP カメラ呼び出しスキル: マルチカメラ切り替えの実装方法 Aug 04, 2023 pm 07:07 PM

PHP カメラ呼び出しスキル: 複数のカメラを切り替える方法 カメラ アプリケーションは、ビデオ会議、リアルタイム監視など、多くの Web アプリケーションの重要な部分になっています。 PHP では、さまざまなテクノロジーを使用してカメラを呼び出し、操作できます。この記事では、マルチカメラの切り替えを実装する方法に焦点を当て、読者の理解を深めるためにいくつかのサンプル コードを提供します。カメラ呼び出しの基本 PHP では、JavaScript API を呼び出すことでカメラを呼び出すことができます。具体的には、私たちは

Python 構文のマインド マップ: コード構造の深い理解 Python 構文のマインド マップ: コード構造の深い理解 Feb 21, 2024 am 09:00 AM

Pythonはそのシンプルで読みやすい構文から幅広い分野で広く使われています。プログラミングの効率を向上させ、コードがどのように機能するかを深く理解するためには、Python 構文の基本構造をマスターすることが重要です。この目的を達成するために、この記事では、Python 構文のさまざまな側面を詳しく説明した包括的なマインド マップを提供します。変数とデータ型 変数は、Python でデータを保存するために使用されるコンテナです。マインド マップには、整数、浮動小数点数、文字列、ブール値、リストなどの一般的な Python データ型が表示されます。各データ型には独自の特性と操作方法があります。演算子 演算子は、データ型に対してさまざまな操作を実行するために使用されます。マインド マップは、算術演算子、比率など、Python のさまざまな演算子の種類をカバーしています。

See all articles