Выполнить функцию без параметра, но нужна переменная вне функции – PHP

У меня есть этот класс под названием Campaign и я пытаюсь выполнить echo $campaign->getName() без использования каких-либо параметров, таких как echo $campaign->getName($user_id, $campaign_id)

 <?php $campaign = new Campaign($db); class Campaign { private $db; public function __construct($db) { $this->db = $db; } public function getName() { $query = $this->db->prepare("SELECT name FROM campaign WHERE campaign_id = :campaign_id AND user_id = :user_id"); $status = $query->execute(array(':campaign_id' => $campaign_id, ':user_id' => $user_id)); return ($query->rowCount() == 1) ? $query->fetchObject()->name : false; } } 

То, что я получаю, это

 Missing argument 1 for Campaign::getName() Missing argument 2 for Campaign::getName() 

Хорошо логическое мышление, которое должно произойти.

То, что я пытаюсь вызвать, – $user_id and $campaign_id которые были получены на сеансе

Вот структура моего init.php где init.php все классы / функции.

введите описание изображения здесь

Можно ли вызвать функцию без параметра, но для этой функции нужна переменная вне функции?

Вы не можете получить доступ к этой переменной, поскольку она не определена локально внутри функции.
Если вы хотите использовать var внутри, когда он определен вне вас, используйте global перед var.

 $foo = 'bar'; function baz() { global $foo; // now u can use it inside. } 

Область переменных php

Мне не нравятся глобальные персонажи, вы также можете сделать что-то вроде:

 function foo($arg1 = null, $arg2 = null) { // if they are not set retrieve from a session $arg1 = ($arg1 !== null) ? $arg1 : $_SESSION['arg1']; // rinse repeat. } 

Вы не указали $ user_id и $ campaign_id из сеанса

Должны иметь $ user_id и $ campaign_id как глобальные переменные:

 global $user_id; global $campaign_id; $user_id = $_SESSION['user_id']; $campaign_id = $_SESSION['campaign_id']; 

Поместите указанное выше объявление переменной после session_start () на скриншот

Попробуй это:

 <?php session_start(); $campaign = new Campaign($db); class Campaign { private $db; public function __construct($db) { $this->db = $db; } public function getName() { $query = $this->db->prepare("SELECT name FROM campaign WHERE campaign_id = :campaign_id AND user_id = :user_id"); $status = $query->execute(array(':campaign_id' => $_SESSION['campaign_id'], ':user_id' => $_SESSION['user_id'])); return ($query->rowCount() == 1) ? $query->fetchObject()->name : false; } }