2017-09-05 27 views
1

class-GetData.phpからgetdata()関数を呼び出すには、このshortcode_function()を呼び出す必要があります。別のファイルから関数を呼び出す

require_once plugin_dir_path(__FILE__) . '/class-GetData.php'; 

add_shortcode('registration-plugin','shortcode_function');  
function shortcode_function() 
{ 
    ob_start(); 
    insert_data(); 
    getdata(); //from GetData.php 
    return ob_get_clean(); 
} 
?> 

クラスGetData.php

<?php 

    class GetData 
    { 
     public function getdata() 
     { 
      //something here 
     } 
    } 

    $getData = new GetData(); 

しかし、私は未定義の関数エラーを取得しています:

Call to undefined function getdata()

+1

'のgetData()' 'GetData'クラスの*メソッド*です。 '$ getData-> getData()'を使う必要があります。オブジェクトのメソッドを呼び出します。通常、クラスファイル内のオブジェクトは初期化されません。 – Qirel

+0

'$ getData-> getdata()' – Und3rTow

+1

http://php.net/manual/en/language.types.object.phpとhttp://を参照してください。 /php.net/manual/en/language.oop5.basic.php – Qirel

答えて

1

はクラスで作成された関数を呼び出すためのGetDataクラスのオブジェクトを使用してください。

require_once plugin_dir_path(__FILE__) . '/class-GetData.php'; 

add_shortcode('registration-plugin','shortcode_function');  
function shortcode_function() 
{ 
    ob_start(); 
    insert_data(); 
    $getData = new GetData(); //Create Getdata object 
    $getData->getdata(); //call function using the object 
    return ob_get_clean(); 
} 

クラスGetData.php

class GetData 
{ 
    public function getdata() 
    { 
     //something here 
    } 
} 
+1

おそらくあなたの答えを少し説明したいですか?元のコードから何が変更されたのですか、なぜそれを変更しましたか?あなたの答えを説明するためには、常にいくつかのテキストがあります。 – Qirel

2

君は、通常の関数呼び出しのようにClass Methodを呼んでいます。クラス内のメソッドを呼び出すには、Class Methodthisキーワードが必要です。関数/メソッドPublicをクラス外から呼び出す場合は、Objectを作成する必要があります。

Try to use -

function shortcode_function(){ 
    ob_start(); 
    insert_data(); 
    $getData = new GetData(); #Create an Object 
    $getData->getdata();  #Call method using Object 
    return ob_get_clean(); 
} 

Example :

class GetData{ 
    public function getdata() { 
     //something here 
    } 

    public function TestMethod(){ 
     $this->getdata(); #Calling Function From Inner Class 
    } 
} 

$getData = new GetData(); #Creating Object 
$getData->getdata();  #Calling Public Function from Outer Class 

Here is the explanation for Private,Public and Protected

+0

または '(新しいGetData()) - > getdata()'のように使うことができます –

+0

答えを少し説明したいのですか?元のコードから何が変更されたのですか、なぜそれを変更しましたか?あなたの答えを説明するためには、常にいくつかのテキストがあります。なぜ誰かが "*使用しようとしているのですか?" – Qirel

+0

ああはい!私は私の答えを更新しています。ありがとう@Qirel –

関連する問題