2017-09-06 167 views
1

如何使用對象或包含的類文件在全局函數中調用類函數?如何在另一個函數中調用php類函數

cls.php是正在使用的類文件。

class tst { public function abc($i) { return $i*$i ; } 

需要調用ABC功能xyzfunction文件two.php

include('cls.php'); 
$obj = new tst(); 
function xyz($j){$result = $obj->abc($j);return $result;} 
echo xyz(5); 

調用$obj->abc($j)不工作。我怎樣才能撥打功能abc()

+0

將'$ obj'變量作爲參數傳遞給函數'xyz(5,$ obj).. function($ j,$ obj){} – JYoThI

+1

爲什麼用Linux標記這個標記? –

+0

記住刪除橫幅效果?在開始行 –

回答

2

試試這樣做,首先是require_once該文件。然後使用$cls代碼創建該類的新實例,然後使用最後一行代碼執行一個函數。

require_once('cls.php'); 
    $cls = new cls(); 
    $cls->function(); 

確保它在您的功能內,例如

public function new_function() { 
     require_once('cls.php'); 
     $cls = new cls(); 
     $result = $cls->function(); 
     return $result; 
} 

然後在你的函數中發送對你當前函數的響應,例如

$res = $cls->new_function(); 
$cls->function($res); 
+1

感謝您的快速響應。它現在正在工作。 – Navneet

0

您必須在函數內部創建對象,而不是在外部。

function xyz($j){ 
    $obj = new tst(); 
    $result = $obj->abc($j);return $result; 
} 
0

請參閱下面的代碼:

<?php 

function xyz($j){ 
    $obj = new tst(); 
    $result = $obj->abc($j); 
    return $result; 
} 
?> 

類的實例已經在函數調用裏面做

0

如果您打算在更多的功能,使用它你可以實例化功能外類並作爲一個參數傳遞給像這樣的函數。否則你實例化函數內部的類。

<?php 
class tst { 

    public function abc($i) { 

     return $i*$i ; 

    } 
} 

$obj = new tst(); 

function xyz($j,$obj){ 

    $result = $obj->abc($j); 
    return $result; 

} 

echo xyz(5,$obj); 
?> 
0

也許你應該使用命名空間

然後

use tst/tstClass 
$tst = new tstClass(); 
$result = $obj->abc($j); 
return $result; 
0

你忘了你的依賴注入。

<?php 

/** 
* @param int $j 
* @param tst $obj 
* @return int 
*/ 
function xyz($j, tst $obj) 
{ 
    $result = $obj->abc($j); 
    return $result; 
} 

不要在函數內部實例化類,這是不好的做法。閱讀依賴注入。

相關問題