How to instantiate a PHP class, write properties, methods, static properties and more
Tags: php, classes, properties, methods
Published: 2020-02-02 12:05:32

Lets write a class named "CAR"

PHP Class (car.inc.php)

```
class Car{
    //Properties
    private $name;
    private $bodyColor;
    private $year;

    public static $NoOfTyres = 4;


    public function __construct($name,$bodyColor,$year){
        $this->name= $name;
        $this->bodyColor = $bodyColor;
        $this->year = $year;
    }

    //Methods
    public function setName($name){
        $this->name = $name;
    }

    public function getName(){
        return $this->name;
    }
    public function getbodyColor(){
        return $this->bodyColor;
    }
    public function getYear(){
        return $this->year;
    }

    public static function setNoOfTyres($newNoTyres){
        self::$NoOfTyres = $newNoTyres;
    }


}
```
In the above class we have a constructor, we look at the constructor and go 'hm this car-constructor got three parameters name, bodyColor and year'. So we create the object in the index.php file, in this case - 'tesla' and pass three parameters (modelx,black,2019) . then to access them we create methods like getName, getYear and getbodyColor and in each method we return the corresponding variable. This is because the private variables/properties cannot be accessed directly .

We replace X with each property or variable.

```
 public function getX(){
        return $this->x;
    }

```
We have written a method 'setName()' which allows us to change the name of an instantiated class.

By writing following 

$tesla = new Car("Modelx","black","2019");

We passed "modelx" as the name but if we decide to change it we can do the following


```
  $tesla->setName("ModelY");  
```

And it would change.

Whats up with the 'static' keyword?

The static keyword can be used for cases like 'the No Of tyres in a car'.  No Of tyres in a car would not change and to access the static property No Of Tyres in the above class we can echo out like so;

```
echo Car::$NoOfTyres;
```

But down the line, say someone wanted 6 tyres in the car, so to change the static property we write another method like so

```  
public static function setNoOfTyres($newNoTyres){
        self::$NoOfTyres = $newNoTyres;
    }

```
then to use it we can do

```

  Car::setNoOfTyres(6);

```

Then echo it out to find if it actually changed.

Index.php would look like this

```
<?php 
include 'includes/car.inc.php';
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <?php
      
      $tesla = new Car("Modelx","black","2019");

      echo $tesla->getName();
      echo  "<br>";
      echo $tesla->getbodyColor();
      echo  "<br>";
      echo $tesla->getYear();

       $tesla->setName("ModelY");  
       echo  "<br>"; 
       echo  "<br>"; 
       echo $tesla->getName();  
       echo "<br>" ;
        echo Car::$NoOfTyres;
        Car::setNoOfTyres(6);
        echo "<br>";
        echo Car::$NoOfTyres;

    ?>
</body>
</html>
```
I have explained this in a video, see if it will help :)

Link to the video: https://youtu.be/f9jay4Ios-4