我有这段代码:
include("classes/list.php");
$start = new listPage();
$start->category=3;
list.php:
class listPage
{
public $category;
function __construct()
{
echo $this->category;
}
}
它没有用。 $ start->类别部分不设置变量的值。有什么想法吗?
答案 0 :(得分:1)
__construct
会立即调用new listPage()
,因此如果您向其传递值,则会将其发送到__construct
方法。
include("classes/list.php");
$start = new listPage(3); // this will be passed to the constructor
echo $start->getCategory; // echo the category here or maybe use it to construct a URL
list.php:
class listPage
{
public $category;
public function __construct($cat)
{
$this->category = $cat; // the constructor will set the category sent to it
}
public function getCategory()
{
return $this->category; // just return the category instead of echoing it so that you can do whatever you want with it in your code where its being fetched.
}
}
答案 1 :(得分:0)
问题是__construct()在类别设置为3之前被调用。您必须将echo放在一个单独的方法中,并在设置$ start-> category后调用它。
答案 2 :(得分:0)
只有在您首次使用$start = new listPage();
您需要做的是创建一个方法来获取您的参数:
class listPage
{
public $category;
function echoCategory($category){
$this->category = $category;
echo $this->category;
}
}
然后你会这样称呼它:
include("classes/list.php");
$start = new listPage();
$start->echoCategory(3);
答案 3 :(得分:0)
在OOP中,构造方法用于构造您的对象,因此您可以初始化其中的参数,例如:
class myClass {
public $myValue;
function __construct() {
$myValue = "someValue";
}
}
实例化一个类时,构造函数方法会自动触发,即赋值(或者在你的情况下被回显)。
你应该改变你的类定义,要么你在instanciation上构建你的值,要么你创建了setter方法,第一个就像是
class listPage {
public $category;
function __construct($someVal) {
$this->category = $someVal;
}
}
$clazz = new listPage("someVal");
echo $clazz->category;
或者您创建了一个setter方法:
class listPage {
public $category;
function __construct() { }
function setCategory($cat) { $this->category = $cat; }
}
$clazz = new listPage();
$clazz->setCategory("someVal");
echo $clazz->category;
为了进一步扩展讨论,你还可以使$category
私有并使用setter和getter,然后你需要在最后一个例子中添加一个方法:
function getCategory() { return $this->category; }
如果要控制对变量的访问,这非常有用。
答案 4 :(得分:-1)
代码将如下所示: -
class listPage
{
public $category;
function __construct()
{
$this->category = '';
}
function setCategory($value)
{
$this->category=$value;
echo $this->category;
}
}
$start = new listPage();
$start->setCategory(3);