Skip to content

Instantly share code, notes, and snippets.

@exileed
Last active January 11, 2018 01:51
Show Gist options
  • Save exileed/37c1865c843473070fb7ab9d7074a679 to your computer and use it in GitHub Desktop.
Save exileed/37c1865c843473070fb7ab9d7074a679 to your computer and use it in GitHub Desktop.
Code Class
<?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