Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- abstract class Db {
- //apakšā pateikšu ko abstract nozīmē
- //protected nozīmē mainīgias būs pieejams pašai klasei un visām klasēm kas viņu extendo
- protected $this->dbh;
- //private nozīmē ka mainīgais būs pieejams tikai Db klasei
- private $this->host = 'localhost';
- private $this->database = 'test'
- private $this->db_username = 'root';
- private $this->db_password = 'password';
- protected function connect(){
- $this->dbh = new mysqli($this->host, $this->db_username, $this->db_username, $this->database);
- }
- }
- //kad kāda klase extendo citu klasi viņa var izmantot visas publiskās un protected, bet ne privātās funkcijas kas pieder parent klasei, šajā gadījumā Db.
- class User extends Db{
- // __construct funkcija tiek izsaukta katru reizi kad no klases tiek uztaisīts objekts(par to zemāk)
- public function __construct(){
- $this->connect();
- }
- public function getName($id){
- //varam izmantot dbh, jo viņš ir protected un pieder parent klasei.
- $name = $this->dbh->query("SELECT name FROM users WHERE id=".$id);
- return $name;
- }
- //testa pēc uztaisam privātu funkciju
- private function getPosts($id){
- $name = $this->dbh->query("SELECT posts FROM users WHERE id=".$id);
- return $name;
- }
- }
- //Lai izmantotu klases funkcijas klase jāpārtaisa par objektu, lai to izdarītu to vajag instantiatot, nezinu kā latviski to sauc, bet angliski sauc instantiate, īsi sakot vienkāršu uzraksti new Klases_nosaukums;
- //tagad arī tiek izsaukta User klases __construct funkcija
- $user = new User;
- //tagad $user ir kļuvis par objektu var izmantot tās klases publiskās funkcijas un piekļūt tās klases publiskajiem mainīgajiem
- $name = $user->getName(1);
- //šādi nevarēs izdarīt jo funkcija ir privāta
- $user->getPosts(1); //atgriezīs erroru Call to private method User::getPosts()
- //abstract, ko es pieliku klāt Db klasei nozīmē ka klasi var tikai extendot, funkciju ziņā abstract ir cita nozīme bet negribu par daudz runāt.
- //to es izdarīju tāpec ka Db klases vienīgais mērķis ir izveidot savinojumu ar datubāzi priekš citām klasēm, tāpēc nav nekādas vajadzības to jebkad pārtaisīt par objektu
- new Db; //atgriezīs erroru Fatal error: Cannot instantiate abstract class Db in
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement