다른 클래스에서 wpdb 확장 - 선택에 get_results를 사용하면 null이 됩니다.
WP에 사용자 지정 플러그인(제가 만든)을 추가했습니다. 이 플러그인에는 wpdb를 확장하는 BaseModel이라는 클래스가 있습니다.
여기서 문제는 쿼리를 실행하려고 할 때마다 false, null, 또는 빈 배열이 발생한다는 것입니다.
class BaseModel extends wpdb{
public function __construct(){
parent::__construct(DB_HOST, DB_USER, DB_PASS, DB_NAME);
}
function get_destinations($limit, $order){
$query = "SELECT * FROM wp_relations";
$result = $this->get_results($query, ARRAY_A);
var_dump($result);
}
function get_total_destinations(){
}}
누가 뭐가 잘못되었는지 말해 줄 수 있습니까?
감사해요.
사실 완전한 OOP 솔루션은 아니지만, 글로벌 $wpdb를 내 기능에 추가하여 해결합니다.
class BaseModel {
function get_destinations($limit, $order){
global $wpdb;
$query = "SELECT * FROM wp_relations";
$result = $wpdb->get_results($query, ARRAY_A);
var_dump($result);
}
function get_total_destinations(){
}}
이것이 도움이 되기를 바랍니다.
<?php
class testWPDB extends wpdb {
function prepare( $query, $arguments ){
return vsprintf( $query, $arguments );
}
}
class UTCW_Test_Data extends WP_UnitTestCase {
protected $utcw;
function setUp(){
$this->utcw = UTCW_Plugin::get_instance();
}
function getWPDBMock(){
return $this->getMock( 'testWPDB', array( 'get_results' ), array(), '', false );
}
function test_author(){
$instance[ 'authors' ] = array( 1, 2, 3 );
$config = new UTCW_Config( $instance, $this->utcw );
$db = $this->getWPDBMock( 'get_results' );
$db->expects( $this->once() )
->method( 'get_results' )
->with( $this->stringContains( 'post_author IN (1,2,3)' ) );
$data = new UTCW_Data( $config, $db );
$data->get_terms();
}
}
연장하고 싶지 않으신 것 같은데요?이 클래스가 항상 Wordpress 파일 내에 로드되는 경우 글로벌 $wpdb에 액세스할 수 있습니다.
class RandomClass {
private $wpdb = false;
public function __construct() {
global $wpdb;
if (is_object($wpdb)) {
$this->wpdb = $wpdb;
}
}
public function get_results($data) {
return $this->wpdb->get_results($data);
}
}
언급URL : https://stackoverflow.com/questions/13906867/extend-wpdb-in-other-class-when-use-get-results-for-select-gives-me-null
'programing' 카테고리의 다른 글
iOS 런칭 설정 -> 제한 URL 스킴 (0) | 2023.10.02 |
---|---|
jQuery를 사용하여 텍스트 상자에 입력한 텍스트의 길이를 얻으려면 어떻게 해야 합니까? (0) | 2023.10.02 |
파이썬에서 RPC를 하기 위한 현재의 선택은 무엇입니까? (0) | 2023.10.02 |
사파리 페이지가 iOS 렌더링을 중단하는 이유는 무엇입니까? (0) | 2023.10.02 |
서버 A(Master로 생각하고 있음)에서 서버 B로 생성된 binlog 파일로 MYSQL 복제를 설정할 수 있습니까? (0) | 2023.10.02 |