[英]Run a function without a parameter but needed a variable outside of the function - 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
的结构,其中存储了所有类/函数。
是否可以在不带参数的情况下调用函数,但是该函数需要在函数之外的变量?
您不能访问该变量,因为它只是未在函数内部本地定义。
如果要在定义外部时使用var内部,请在var之前使用global
。
$foo = 'bar';
function baz() {
global $foo;
// now u can use it inside.
}
我个人不喜欢全局变量,您也可以执行以下操作:
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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.