PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (7): « 1 2 3 4 5 6 [7]

> Найдено сообщений: 92
shum0531 Отправлено: 22 Января, 2013 - 17:35:07 • Тема: Ваше мнение о моих набросках? • Форум: Вопросы новичков

Ответов: 12
Просмотров: 329
spsu пишет:
record - там file_put_contents хватит


Действительно, забыл что file_put_contents имеет lock

spsu пишет:
$fileDB - арг-ммент который почти в каждую функц. передаеться стоит сделать полем.


Если честно, не совсем понимаю как. Ведь эта имя таблицы (вернее файла) если это будет свойством (полем) придется для каждой таблицы создавать объект класса.

Правильно понимаю?
shum0531 Отправлено: 22 Января, 2013 - 16:45:53 • Тема: Ваше мнение о моих набросках? • Форум: Вопросы новичков

Ответов: 12
Просмотров: 329
PHP я начал изучать относительно не давно.
В силу того что читать я не наживу, изучал практическими методами (ставил себе задачи и с подошью справки их реализовывал).
Но вот настал черед ООП и я ни как не могу его понять - как и с чем это "есть".
Попробовал написать класс работы с текстовой базой(код ниже), что то вроде получается, но смысл этого ООП когда все похоже на процедурное программирование?
Вообщем подскажите что я начал делать не так, потому что мне кажется что я пишу это "Филькина грамота"

вот собственно код:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class JsonDB {         
  3.         public $txt = '.txt';
  4.         public $confDB = '-conf.txt';
  5.         public $error = 'Не найдена таблица с данными!';       
  6.         function SELECT($fileDB) {
  7.                 if ($this->checkfile($fileDB)){
  8.                         $dd = $this->reading($fileDB.$this->txt);
  9.                         return $dd;
  10.                 } else {
  11.                         return $this->error;                   
  12.                 }
  13.         }      
  14.         function INSERT($fileDB, $param) {
  15.                 if ($this->checkfile($fileDB)){
  16.                         $data = $this->reading($fileDB.$this->txt);
  17.                         $param['id'] = ($this->ID($data))+1;
  18.                         $data[] = $param;
  19.                         $this->record($fileDB.$this->txt, $data);
  20.                 } else {
  21.                         return $this->error;                   
  22.                 }              
  23.         }      
  24.         function UPDATE($fileDB, $param) {
  25.                 if ($this->checkfile($fileDB)){
  26.                        
  27.                 } else {
  28.                         return $this->error;                   
  29.                 }
  30.                
  31.         }      
  32.         function DELETE($fileDB, $param) {
  33.                 if ($this->checkfile($fileDB)){
  34.                         $data = $this->reading($fileDB.$this->txt);
  35.                         $rec = array();
  36.                         if(isset($data)) // Костыль - когда база пустая
  37.                         foreach ($data as $k => $v) {
  38.                                 foreach ($param as $key => $value) {
  39.                                         if ($value == $data[$k][$key]){
  40.                                                 unset($data[$k]);
  41.                                         } else {
  42.                                                 $rec[] = $data[$k];
  43.                                         }
  44.                                 }
  45.                         }
  46.                         $this->record($fileDB.$this->txt, $rec);
  47.                 } else {
  48.                         return $this->error;                   
  49.                 }              
  50.         }      
  51.         function CREATE($fileDB){
  52.                 if (!$this->checkfile($fileDB)){
  53.                         fclose(fopen($fileDB.$this->txt, "a+b"));
  54.                 }
  55.         }      
  56.         function DROP($fileDB){
  57.                 if (!$this->checkfile($fileDB)){
  58.                         unlink($fileDB.$this->txt);
  59.                 } else {
  60.                         return $this->error;                   
  61.                 }
  62.         }      
  63.         private function record($fileDB, $data){
  64.                 $f = fopen($fileDB, "r+b") or die($this->error);
  65.                 flock($f, LOCK_EX);            
  66.                 ftruncate($f, 0);
  67.                 fseek($f, 0, SEEK_SET);
  68.                 //Пишем
  69.                 $data = json_encode($data);    
  70.                 fwrite($f, $data);             
  71.                 fclose($f);
  72.         }      
  73.         private function reading($fileDB){
  74.                 $f = fopen($fileDB, "r+b") or die($this->error);
  75.                 flock($f, LOCK_SH);    
  76.                 //Читаем       
  77.                 $data = file_get_contents($fileDB);                    
  78.                 return json_decode($data, true);       
  79.         }      
  80.         private function ID($DB){
  81.                 if (count($DB) > 0){
  82.                         $col = count($DB)-1;
  83.                 }else {
  84.                         return 0;
  85.                 }              
  86.                 return (int)$DB[$col]['id'];   
  87.         }      
  88.         private function checkfile($fileDB){   
  89.                 if(is_file($fileDB.$this->txt)){
  90.                         return true;   
  91.                 } else {
  92.                         return false;
  93.                 }
  94.         }      
  95. }
  96. ?>

(Добавление)
Совсем забыл.
Вот обращения к классу:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include 'JsonDB.php';
  3. $DB = new JsonDB();
  4. // Создать таблицу 'users'
  5. $DB->CREATE('users');
  6. // Внести новые данные
  7. $DB->INSERT('users', array('имя','мыло','пароль','статус') );
  8. // Или так
  9. $DB->INSERT('users', array('user'=>'имя','mail'=>'мыло','passw'=>'пароль','rol'=>'статус') );
  10. // Удалить 'users' с id = 1
  11. $DB->DELETE('users', array('id'=>1));
  12. // Удалить таблицу 'users'
  13. $DB->DROP('users');
  14. // Извлечь все данные
  15. $DB->SELECT('users');
  16. ?>

Страниц (7): « 1 2 3 4 5 6 [7]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB