php 用类中的变量,回应PHP类中的变量

我快速浏览了一些与我相似的问题,但没有一个答案能够解决我遇到的问题.

我有两个文件. product.php和index.php. Product.php定义了产品类,我只是使用index.php作为输出变量的页面.理想情况下,这将用于将来输出来自不同类的对象.

product.php

class Product{

public $var = "a default value";

public function __construct($var){

$var = $var;

}

public function displayVar(){

echo $this->var;

}

}

index.php(全部包含在php标签中)

require_once("product.php");

$product = new Product();

echo $product->var;

我尝试了不同的方法来包含文件(require,include,include_once).我不确定这是不是问题.

我得到的问题是$product-> var不输出.相反,我收到以下错误:

Notice: Undefined property: Product::$var in C:\xampp\htdocs\FurnitureWebsite\index.php on line 21

我不完全确定为什么它会考虑这个变量未定义.我浏览了关于类和属性的PHP文档,但没有看起来真正的答案.

最后一点:我用index.php中定义的类尝试了这个,它运行正常.这让我觉得我的文件路径可能有问题,但文件名拼写正确,文件在同一个目录中,所以我不完全确定.

解决方法:

解释相关

首先,在您的类中,您为构造函数指定了一个变量.但是,这个变量是强制性的(意思是,没有默认值).因此,在实施新产品时,您必须提供一个价值.

此外,如果您使用的是构造函数,则在调用构造函数之前无需为变量赋予默认值.

也就是说,如果你想在不调用方法的情况下访问你的价值,那么就有很多解决方案.

解决方案1:实例化并直接调用变量

class Product {

public $var = 'a default value';

}

$product = new Product();

echo $product->var;

解决方案2:使用访问器获取受保护/私有值

class Product {

protected $var = 'a default value';

public function getVar() {

return $this->var;

}

}

$product = new Product();

echo $product->getVar();

解决方案3:使用构造函数初始化值

class Product {

protected $var;

public function __construct($var = 'a default value') {

$this->var = $var;

/* $this->var stands for protected $var */

/* $var stands for... $var in the parameters */

}

public function getVar() {

return $this->var;

}

}

$product = new Product(); /* no value, so $var = 'a default value'; */

echo $product->getVar();

解决方案4:使用静态变量

class Product {

public static $var = 'a default value';

}

echo Product::$var;

解决方案5:使用具有受保护静态值的静态方法

class Product {

protected static $var = 'a default value';

public static function getVar() {

return self::$var;

}

}

echo Product::getVar();

文档

标签:php,oop,properties,class

来源: https://codeday.me/bug/20190623/1266607.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值