仅为已知变量创建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

大家好,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_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";