我在Laravel中有一个Event类作为Controller类。这是名称空间。
Object.getOwnPropertyDescriptor(FUNC,"what do i put here?");
这是类的起始代码和构造函数。
namespace App\Http\Controllers\Admin;
这是函数名称和定义
class EventController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
我正在使用 function generateBarcodeNumber() {
$number = mt_rand(1000000000, 9999999999); // better than rand()
// call the same function if the barcode exists already
if (barcodeNumberExists($number)) {
return generateBarcodeNumber();
}
// otherwise, it's valid and can be used
return $number;
}
function barcodeNumberExists($number) {
// query the database and return a boolean
// for instance, it might look like this in Laravel
return User::whereBarcodeNumber($number)->exists();
}
关键字作为另一个函数调用该函数
$this
这是错误:
调用未定义函数App \ Http \ Controllers \ Admin \ barcodeNumberExists()
谢谢!
答案 0 :(得分:0)
$this
是类实例变量。 并且它在静态范围内不可用。
class AcmeEvent
{
public slug_str;
}
class AcmeBarcodeEventGenerator
{
public function generateEvent()//: AcmeEvent
{
$e = new AcmeEvent();
$e->slug_str = $this->generateBarcodeNumber();
return $e;
}
public function generateBarcodeNumber()//: int
{
return mt_rand(1000000000, 9999999999);
}
}
$generator = new AcmeBarcodeEventGenerator();
$e = $generator->generateEvent();
die(var_dump($e)); // Will stop executing script and dump the event instance.
如果要在类范围之外使用类函数(方法),请像这样使用它。
$e = new AcmeEvent();
$e->slug_str = (new AcmeBarcodeEventGenerator())->generateBarcodeNumber();
die(var_dump($e)); // Will stop executing script and dump the event instance.
您似乎正在调用一个名为barcodeNumberExists
的函数。它不是类方法的调用。 PHP表示您正在调用未定义的函数。这是你的问题。如果是方法名;对此明确。像:$this->barcodeNumberExists()
。除此以外; php fill尝试在名称空间而不是类中查找函数。您来自Java吗?
在问题编辑后添加。
public function generateBarcodeNumber() {
$number = mt_rand(1000000000, 9999999999); // better than rand()
// call the same function if the barcode exists already
if ($this->barcodeNumberExists($number)) {
return $this->generateBarcodeNumber();
}
// otherwise, it's valid and can be used
return $number;
}
private function barcodeNumberExists($number) {
// query the database and return a boolean
// for instance, it might look like this in Laravel
return User::whereBarcodeNumber($number)->exists();
}