Last active
January 11, 2018 01:51
-
-
Save exileed/37c1865c843473070fb7ab9d7074a679 to your computer and use it in GitHub Desktop.
Code Class
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
* Название класса не по psr1,psr-2, -> StaInstall | |
* Сама по себе реализация спорная. | |
* Тут 2 варианта идти по пути фреймворков (пользователя сами настраивают ) или все делает движок. | |
* в случае движка. мы должны не создавать новый файл конфигураций. я копировать config.demo.php в config.php, и уже там менять параметры. | |
* Прст, завтра мы захотим еще что-то там хранить. что будет тогда ? | |
*/ | |
class staInstall { | |
// Если мы не юзаем эту переменную за пределами класса то нужно ставить private | |
public $db_host; | |
public $db_name; | |
public $db_user; | |
public $db_pass; | |
public $db_char; | |
private $pathConfig = "../../config/config_db.php"; | |
private $pathConnect = "../../config/connect_db.php"; | |
private $pathConnectDemo = "demo/connect_db.php"; | |
private $pathSql = "../sql/*.sql"; | |
private $pathDemoBjcp = "demo/bjcp.php"; | |
// Это лучше перенести в конструктор . что бы мы знали что эти данные всегда были в классе . | |
// и вызывать его через new StaInstall('localhost'...); | |
public function __construct( $db_host, $db_name, $db_user, $db_pass, $db_char ) { | |
$this->db_host = $db_host; | |
$this->db_name = $db_name; | |
$this->db_user = $db_user; | |
$this->db_pass = $db_pass; | |
$this->db_char = $db_char; | |
} | |
//Создание файла config_db.php | |
// Мне не понятно что делает эта функция почему бы не написать createConfingFile() | |
// sta в начале это для чего ? | |
public function staInstallConfig() { | |
$data = '<?php | |
$host = "' . $this->db_host . '"; | |
$db = "' . $this->db_name . '"; | |
$user = "' . $this->db_user . '"; | |
$pass = "' . $this->db_pass . '"; | |
$charset = "' . $this->db_char . '";'; | |
file_put_contents( $this->pathConfig, | |
$data ); // Нету обработчика ошибок. Что будет если у нас не будет прав его записать ? | |
file_put_contents( "demo/config_db.php", $data ); // тоже что и выше | |
} | |
//Создание таблиц в БД | |
// migrateTable // installTabel | |
public function staInstallTable() { | |
require_once( $this->pathConnect ); // psr4? | |
$sql = glob( $this->pathSql ); // спорное решение создания таблиц. может подумать в сторону миграций или общего файла sql как делаю в cms | |
$max = count( $sql ); | |
for ( $i = 0; $i < $max; $i ++ ) { | |
$query = file_get_contents( $sql[ $i ] );//это что за фигня ? это делать опасно . | |
$count = $pdo->exec( $query ); | |
}; | |
} | |
//Запись демо данных | |
public function staInstallDemo() { | |
require_once( $this->pathConnectDemo ); | |
require_once( $this->pathDemoBjcp ); | |
$stmt = $pdo->prepare( "INSERT INTO rcb_bjcpcatalog (bjcp_category,bjcp_style) VALUES (:name, :value)" ); | |
$stmt->bindParam( ':name', $name ); | |
$stmt->bindParam( ':value', $value ); | |
foreach ( $arrayCategoryBeer as $key => $style ) { | |
foreach ( $style as $arrayCategoryBeer ) { | |
$name = $key; | |
$value = $arrayCategoryBeer; | |
$stmt->execute(); | |
} | |
} | |
} | |
// Создание нового пользователя // Это лучше писать не комментарияеми а phpdoc | |
public function staInstallUser( $login, $password, $email ) { | |
require_once( $this->pathConnectDemo ); | |
// таблицы названны плохо. если хотите сделать префикс. вынесете его в конфиг а так... это бесполезно | |
// столбцы названны не приятно. почему бы не назвать login, password, email ведь мы знает что в таблице users живут юзера | |
$stmt = $pdo->prepare( "INSERT INTO rcb_users (users_login,users_hash,users_mail) VALUES (:name, :value, :mail)" ); | |
$stmt->bindParam( ':name', $name ); | |
$stmt->bindParam( ':value', $value ); | |
$stmt->bindParam( ':mail', $mail ); | |
$name = $login; | |
$value = md5( $password );// md5 без соли плохо. в 2017 году есть password_hash | |
$mail = $email; | |
$stmt->execute(); | |
} | |
//Вывод шаблона // его так не выводят @see https://github.com/slimphp/PHP-View/blob/master/src/PhpRenderer.php#L148-L180 | |
public function staInstallTemplate( $template ) { | |
$path = "../template/" . $template . ".template";// это в конфиг сразу. нечего потом искать по всему проекту | |
$data = file_get_contents( $path ); // а если его нет ? нету обработчика ошибок. | |
return $data; | |
} | |
//прием данных от пользователя методом POST | |
public function staInstallPost( $namePost ) { | |
//Тут добавить валидацию | |
$result = $_POST[ $namePost ]; // отсюда вызывать пост плохо. передавайте лучше в фукию конкрентое значение | |
return $result; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment