仅为已知变量创建PHP类
大家好,Stack Over Flow会员们,我希望你们能帮助我解决一些我一直无法解决的问题。我一直无法为下面的代码编写一个类,我希望你们中的一位php专家能够提供帮助仅为已知变量创建PHP类,php,class,methods,Php,Class,Methods,大家好,Stack Over Flow会员们,我希望你们能帮助我解决一些我一直无法解决的问题。我一直无法为下面的代码编写一个类,我希望你们中的一位php专家能够提供帮助 $obj = new ClassName (); $obj->setName ('Name of Something'); $obj->price = 500.00; $obj ['address_primary'] = 'First Line of Address'; $obj->address_second
$obj = new ClassName ();
$obj->setName ('Name of Something');
$obj->price = 500.00;
$obj ['address_primary'] = 'First Line of Address';
$obj->address_secondary = 'Second Line of Address';
$obj->city = 'the city';
$obj->state = 'ST';
$obj->setZip (12345);
echo 'Name :: ', $obj->name, PHP_EOL;
echo 'Price :: $', $obj ['price'], PHP_EOL;
echo 'Address :: ', $obj->address_primary, ' ', $obj->getAddressSecondary (), PHP_EOL;
echo 'City, State, Zip :: ', $obj->city, ', ', $obj ['state'], ' ', $obj->getZip ();
每次我尝试编写一个类时,它要么打印为空白,要么WebStorm抛出一个错误,说明类中没有声明方法
我使用的代码:
任何代码建议都将不胜感激 真是一团糟!:)您混合了setter/getter和directaccess,并且使用的是老式的构造函数。你可以很快把它清理干净
class Property
{
public function __construct($name, $price, $address_1, $address_2, $city, $state, $zip)
{
$this->name = $name;
$this->price = $price;
$this->address_primary = $address_1;
$this->address_secondary = $address_2;
$this->city = $city;
$this->state = $state;
$this->zip = $zip;
}
}
如果您使用构造函数中的所有变量像这样设置类,那么您应该像这样使用它:
$obj = new Property(
"Name of Something",
500,
"First Line",
"Second Line",
"City",
"State",
"90210"
);
echo 'Name :: ', $obj->name, PHP_EOL;
echo 'Price :: $', $obj->price, PHP_EOL;
echo 'Address :: ', $obj->address_primary, ' ', $obj->address_secondary, PHP_EOL;
echo 'City, State, Zip :: ', $obj->city, ', ', $obj->state, ' ', $obj->zip;
代码中标记的问题有:
您将成员与函数混合在一起。构造函数中的此类内容是主要的破坏:
$this->setName = $price
您还将子字符串access[]与->混合使用,并在顶部使用getter->getName()。保持一致,在这种情况下,尊重公共变量的语义
最后,在构造函数中有参数,但根本没有使用它
另一种方法是默认情况下为构造函数签名变量赋值,使其成为可选的
public function __construct($name = "", $price = 0, $address_1 = "", $address_2 = "", $city = "", $state = "", $zip = "" )
然后像以前一样使用公共成员访问:
$obj = new Property();
$obj->name = "Some Name";
祝您学习顺利。可能Op不想在实例化时分配所有逻辑,该逻辑由无可选参数构造函数假定。无论哪种情况,我都发布了选项。谢谢!我想旧习惯很难改掉,谢谢你提供的超丰富的信息,非常值得!这就是为什么我爱读堆栈溢出,终于跳上了船,加入了!很高兴我这么做了
$obj = new Property();
$obj->name = "Some Name";