Доступ к методу в другом пространстве имен - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь из моего контроллера получить доступ к методу в модели, которая находится в другом пространстве имен, и единственный способ, которым я мог это сделать, - сделать метод статичным.Это правильный способ сделать это, или есть какой-то аккуратный подход?

PagesController.php (контроллер):

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Helpers\ConnectedHost;


class PagesController extends Controller
{

    /* 
     * REMOVED CODE HERE FOR READABILITY 
     * Below is where I instantiate the "connectedHost"-object
     */
    $hosts[$hostKey] = new ConnectedHost($hostAttributes['ipv4'], $hostAttributes['mac']);
}

/* REMOVED CODE HERE FOR READABILITY AS WELL */

ConnectedHost.php (файл-помощник):

namespace App\Helpers;

class ConnectedHost
{
    public $ipv4, $mac;

    public function __construct($ipv4, $mac)
    {
        $this->ipv4 = $ipv4;
        $this->mac = $mac;
        // This is where I call the getName-function staticly,
        $this->name = \App\Host::getName();
    }
}

Host.php (модель):

namespace App;

use Illuminate\Database\Eloquent\Model;

class Host extends Model
{
    // The method below is declared static
    public static function getName()
    {
        $name = 'wenzzzel';

        return $name;
    }
}

1 Ответ

0 голосов
/ 28 января 2019

Если вы напрямую обращаетесь к методу из модели, например

$data = \App\ModelName::methodName();

, тогда ваш метод должен быть статическим.

, если ваш метод не статичен, вы можете получить к нему доступ как

$model = new \App\ModelName();
$data = $model->methodName();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...