关于php中的OOP

关于php中的OOP,php,oop,Php,Oop,我正在重新学习OOP编程 在PHP中 我一直错误地认为类def中的所有变量都不是静态的 必须继续使用$this->。我最终在变量命名冲突中绊倒了自己 我现在正在重新学习php OOP的方法 我现在的问题是: 是否可以将带有$this->的方法属性集标记为public、private或protected 我已经做到了 class _DEMO { private $this->someVar = 'whatever'; } 我得到一个语法错误。

我正在重新学习OOP编程 在PHP中

我一直错误地认为类def中的所有变量都不是静态的 必须继续使用$this->。我最终在变量命名冲突中绊倒了自己 我现在正在重新学习php OOP的方法

我现在的问题是:

是否可以将带有$this->的方法属性集标记为public、private或protected

我已经做到了

 class _DEMO
      {
         private $this->someVar = 'whatever';

      }
我得到一个语法错误。 然后:

class\u演示
{
公共函数构造(元ip)
{
$this->ip=$\u ip;//当然,您可以:

class MySampleClass {

    /**
     * @var string
     */
    private $aStringVariable;


    /**
     * @param string $anIP
     */
    protected function __construct( $anIP ) {

        $this->aStringVariable = $anIP;

    }

}


// How to use the class

$myClassObject = new MySampleClass( '192.168.0.1' );
您可能希望下载PHP IDE的eval版本。IDE可能会有所帮助,因为它会在您键入时指出错误,并且PHPStorm提供自动完成功能


另外,请查看。提供了有价值的信息。

属性在类的开头声明,如:

public $property1;
private $property2;
protected $property3;
那么

1.可以从同一类的任何方法访问所有属性,如
$this->property
。 2.
$property1
可以从任何类中的所有方法访问。 3.
$property2
可以从同一类中的所有方法访问。 4.
$property3
可以从同一类中的所有方法以及扩展同一类的类访问。 例如,您可以通过公共方法访问私有财产:

class A {
    private $property;

    public function getProperty() {
       return $this->property
    }
然后,在控制器中,您可以执行以下操作:

$obj = new A;
$property = $obj->getProperty();
但不是:

$obj = new A;
$property = $obj->property;

下面是一个使用属性的简单示例

class HelloProperty{
    private $mySimpleProperty;

    public function setSimpleProperty($mySimpleProperty){
        $this->mySimpleProperty = $mySimpleProperty;
    }


    public function getSimpleProperty(){
        return $this->mySimpleProperty;
    }

}


$obj = new HelloProperty();
$obj->setSimpleProperty('Hello Property');
echo $obj->getSimpleProperty();

:)

你需要学习PHP语法规则。如果你学习过,你就会知道为什么你的第一个代码片段永远不会工作。不要在声明时使用
$this->
,它已经隐含了(
class foo{private$someVar;}
$obj = new A;
$property = $obj->property;
class HelloProperty{
    private $mySimpleProperty;

    public function setSimpleProperty($mySimpleProperty){
        $this->mySimpleProperty = $mySimpleProperty;
    }


    public function getSimpleProperty(){
        return $this->mySimpleProperty;
    }

}


$obj = new HelloProperty();
$obj->setSimpleProperty('Hello Property');
echo $obj->getSimpleProperty();