<?php
namespace core {
class connect {
}
abstract class read extends connect{
public static function select($bdName,$tableName,$select,$where){
$connection=connect::connect();
if(isset($where)&&$where!=false){ $whereFlag=true;
}else{
$whereFlag=false;
}
switch($whereFlag):
case false:
$query="SELECT ".$select." FROM ".$bdName.".".$tableName;
break;
case true:
$query="SELECT ".$select." FROM ".$bdName.".".$tableName." WHERE ".$where;
break;
endswitch;
return $result;
}
}
}
namespace core\classes {
use core\read;
class users extends read{
protected $bdName,$tableName,$select,$where;
protected function setTable($tableName){
$this->tableName=$tableName;
return $this->tableName;
}
protected function testuser() {
echo "Hello from ".__LINE__."\n";
}
protected function setSelect($select){
$this->select=$select;
return $this->select;
}
protected function setWhere($where){
$this->where=$where;
return $this->$where;
}
public function __construct(){
//конструктор поломал для теста;
}
}
class admin extends users{
private $login,$pass;
public function test() {
$this->testuser();
}
private function setLogin($login){
$this->login=$login;
return true;
}
private function setPass($pass){
$this->pass=$pass;
return true;
}
private function login(){
// users:: - здесь из доступных наследуемых функций только select из класса readDB
$getLogin=users::select($this->bdName,$this->tableName,$this->select,$this->where);
$hashPass=password_hash($this->pass,PASSWORD_DEFAULT);
}
}
$admin=new admin;
$admin->test();
}
PD9waHAKCm5hbWVzcGFjZSBjb3JlIHsKCmNsYXNzIGNvbm5lY3QgewoJCn0KCmFic3RyYWN0IGNsYXNzIHJlYWQgZXh0ZW5kcyBjb25uZWN0ewogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZWxlY3QoJGJkTmFtZSwkdGFibGVOYW1lLCRzZWxlY3QsJHdoZXJlKXsKICAgICAgICAkY29ubmVjdGlvbj1jb25uZWN0Ojpjb25uZWN0KCk7CiAgICAgICAgaWYoaXNzZXQoJHdoZXJlKSYmJHdoZXJlIT1mYWxzZSl7CiAgICAgICAgICAgICR3aGVyZUZsYWc9dHJ1ZTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgJHdoZXJlRmxhZz1mYWxzZTsKICAgICAgICB9CiAgICAgICAgc3dpdGNoKCR3aGVyZUZsYWcpOgogICAgICAgICAgICBjYXNlIGZhbHNlOgogICAgICAgICAgICAgICAgJHF1ZXJ5PSJTRUxFQ1QgIi4kc2VsZWN0LiIgRlJPTSAiLiRiZE5hbWUuIi4iLiR0YWJsZU5hbWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSB0cnVlOgogICAgICAgICAgICAgICAgJHF1ZXJ5PSJTRUxFQ1QgIi4kc2VsZWN0LiIgRlJPTSAiLiRiZE5hbWUuIi4iLiR0YWJsZU5hbWUuIiBXSEVSRSAiLiR3aGVyZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGVuZHN3aXRjaDsKICAgICAgICAkcmVzdWx0PW15c3FsaV9xdWVyeSgkY29ubmVjdGlvbiwkcXVlcnkpOwogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQp9Cn0KCgpuYW1lc3BhY2UgY29yZVxjbGFzc2VzIHsKCnVzZSBjb3JlXHJlYWQ7CmNsYXNzIHVzZXJzIGV4dGVuZHMgcmVhZHsKICAgIHByb3RlY3RlZCAkYmROYW1lLCR0YWJsZU5hbWUsJHNlbGVjdCwkd2hlcmU7CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0VGFibGUoJHRhYmxlTmFtZSl7CiAgICAgICAgJHRoaXMtPnRhYmxlTmFtZT0kdGFibGVOYW1lOwogICAgICAgIHJldHVybiAkdGhpcy0+dGFibGVOYW1lOwogICAgfQogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHRlc3R1c2VyKCkgewogICAgCWVjaG8gIkhlbGxvIGZyb20gIi5fX0xJTkVfXy4iXG4iOwogICAgfQogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNldFNlbGVjdCgkc2VsZWN0KXsKICAgICAgICAkdGhpcy0+c2VsZWN0PSRzZWxlY3Q7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZWxlY3Q7CiAgICB9CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0V2hlcmUoJHdoZXJlKXsKICAgICAgICAkdGhpcy0+d2hlcmU9JHdoZXJlOwogICAgICAgIHJldHVybiAkdGhpcy0+JHdoZXJlOwogICAgfQogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCl7CiAgICAgICAgLy/QutC+0L3RgdGC0YDRg9C60YLQvtGAINC/0L7Qu9C+0LzQsNC7INC00LvRjyDRgtC10YHRgtCwOwogICAgfQp9CgpjbGFzcyBhZG1pbiBleHRlbmRzIHVzZXJzewogICAgcHJpdmF0ZSAkbG9naW4sJHBhc3M7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdCgpIHsKICAgIAkkdGhpcy0+dGVzdHVzZXIoKTsKICAgIH0KICAgIAogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZXRMb2dpbigkbG9naW4pewogICAgICAgICR0aGlzLT5sb2dpbj0kbG9naW47CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHNldFBhc3MoJHBhc3MpewogICAgICAgICR0aGlzLT5wYXNzPSRwYXNzOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBsb2dpbigpewovLyAgICAgICAgdXNlcnM6OiAtINC30LTQtdGB0Ywg0LjQtyDQtNC+0YHRgtGD0L/QvdGL0YUg0L3QsNGB0LvQtdC00YPQtdC80YvRhSDRhNGD0L3QutGG0LjQuSDRgtC+0LvRjNC60L4gc2VsZWN0INC40Lcg0LrQu9Cw0YHRgdCwIHJlYWREQgogICAgICAgICRnZXRMb2dpbj11c2Vyczo6c2VsZWN0KCR0aGlzLT5iZE5hbWUsJHRoaXMtPnRhYmxlTmFtZSwkdGhpcy0+c2VsZWN0LCR0aGlzLT53aGVyZSk7CiAgICAgICAgJGhhc2hQYXNzPXBhc3N3b3JkX2hhc2goJHRoaXMtPnBhc3MsUEFTU1dPUkRfREVGQVVMVCk7CiAgICB9Cn0KCiRhZG1pbj1uZXcgYWRtaW47CgokYWRtaW4tPnRlc3QoKTsKCn0K