私はWordPressプラグインを作成しています。現在、管理者側で作業しています。このプロジェクトではクラスを使用しています。私が遭遇した問題は、おそらく私の未熟さに由来しています。PHPのクラスメソッドからクラスメソッドを正しく構築して呼び出すにはどうすればよいですか?
は、私は2つのクラス、管理者ページに1つ、とを持って、私はいくつかのデータベース操作を行うためには、それが意味をなすだろうと思っ
などのカスタムデータベーステーブルの作成、削除、クエリを処理するために、他のtools_pageメソッドが呼び出されたときにテーブルオブジェクト($ db)を作成します。これは以下のコードに反映されています。ただし、$ db-> create_update_tables()コールは$ dbが見つかりません。
$ dbの作成をdb_tablesメソッドに移動すると、コードが実行されます。
私は、関連するメソッドが公開されているので、$ dbオブジェクトは管理ページ内の他のメソッドで使用できるはずだと思いました。私は自分の研究の印象の下に、プラグインの実行中にすべてのデータベース呼び出しで使用するために単一のグローバル$ wpdbを宣言することを推奨しました。私が正しくない場合、これを行う正しい方法は何ですか?
adminクラス:テーブル用
class Home_Search_Admin {
public function __construct($plugin_name, $version, $db_version) {
$this->plugin_name = $plugin_name;
$this->version = $version;
$this->db_version = $db_version;
}
public function db_tables() {
echo "Inside db_tables";
$db->create_update_tables();
wp_die();
}
public function tools_page() {
include(plugin_dir_path(__FILE__) . 'partials/home-search-admin-display.php');
$db = new Home_Search_Tables();
$this->db_tables();
}
}
クラス:
class Home_Search_Tables {
private $wpdb;
public function __construct() {
global $wpdb;
$this->wpdb = $wpdb;
print_r("Constructed!");
}
public function create_update_tables() {
print_r('I am in the method!');
}
}
を
$this->db
同じでしょうか? (エラー+ログ)。 partを使って宣言のコード全体を見ることができないので、出力ログ –
を表示することをお勧めします。あなたが実際の実装を表示していないときに説明することはそれほど有用ではありません – TurtleTread
@ Elvin85エラー(PHP)は、$ dbオブジェクトが定義されていないということです。私は上でそれをよりよく説明しようとしました。ご協力いただきありがとうございます。申し訳ありませんが、私はあなたに戻って遅いでした。私は終日サイト外だった。 –