Michael
18.12.2015 - 10:10
Цитата (Ron) |
Прямо CMF? =) И чего, есть документация как к ней модули/плагины рисовать? )) Иначе это просто кастомная CMS на некотором самописном фрейме, не более того. |
где тут логика?
_____________
There never was a struggle in the soul of a good man that was not hard
Цитата (Michael @ 18.12.2015 - 10:10) |
где тут логика? biggrin.gif |
Вроде Drupal считается CMF? А та же джумла - нифига. Игорь написал некое подобие друпала? Что ж, похвально! )
Игорь_Vasinsky
18.12.2015 - 10:18
Цитата |
И чего, есть документация как к ней модули/плагины рисовать? )) |
логики действительно нет.
CMF подразумевает под собой - CMS, но в данном случае - работа на структурой сайта и функционалом - не ограничивается кликаньем по ссылкам в админке, грубо говоря - это управление самой CMS
у меня даже есть модуль для создания модулей - он создаёт 3 файла MVC - с первоначальным кодом
Цитата |
Игорь написал некое подобие друпала? |
угу.
я же говорю - фреймворк, на котором равёрнута CMS - со стандартным функционалом (для быстрого разварачивания стандартных сайтов), в то же время - расширение функционала не имеет предела.
весь пользовательский интерфейс (шаблоны) пишутся под конкретный дизайн.
а доки мне и не нужны, я ж писал код, и не для шары
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Значит я плохо разбираюсь в терминологии. =) Всегда думал, что CMF нечто очень крутое и в одиночку создать невозможно.
Игорь, а код где-нибудь можно глянуть? Или хотя бы скриншоты.
Игорь_Vasinsky
18.12.2015 - 10:31
Ron
щас сделаем
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
18.12.2015 - 10:44
а самое главное, что не надо писать одно и то же по 100500 раз
в базовом классе есть и логирование и обёртки, удобная работа с постраничкой и т.д. и т.д.
базовые контроллер и модель
<?php
@author @email igor.vasinsky@gmail.com
@copyright
class BaseModel{
const DEBUG = DEBUG;
protected $mysqli;
protected $start;
protected $count;
protected $pageSize;
protected $thisPage;
private $paginate = array();
public function __construct(){
return $this->mysqli = Fw_mysqli::connect();
}
@param
public function sqlQuery($sql){
$result = $this->mysqli->query($sql);
if(!$result){
Files::addtolog(LOG_MYSQLI, $sql.'--->>>'.$this->mysqli->error);
throw new Exception($this->mysqli->error);
}
else{
return $result;
}
}
@param
public function sqlMultyQuery($sql){
$result = $this->mysqli->multi_query($sql);
if(!$result){
Files::addtolog(LOG_MYSQLI, $sql.'--->>>'.$this->mysqli->error);
throw new Exception($this->mysqli->error);
}
else{
while($this->mysqli->next_result()) $this->mysqli->store_result($linkId);
return $result;
}
}
@param
public function returnData($sql){
$result = $this->mysqli->query($sql);
if(!$result){
Files::addtolog(LOG_MYSQLI, $sql.'--->>>'.$this->mysqli->error);
throw new Exception($this->mysqli->error);
}
else{
if($result->num_rows>0){
while($row = $result->fetch_assoc()){
$data[] = $row;
}
return $data;
}
else{
return false;
}
}
}
@param
public function updateData($sql){
$result = $this->mysqli->query($sql);
if(!$result){
Files::addtolog(LOG_MYSQLI, $sql.'--->>>'.$this->mysqli->error);
throw new Exception($this->mysqli->error);
}
else{
return $this->mysqli->affected_rows;
}
}
@param @return
public function deleteData($sql){
$result = $this->mysqli->query($sql);
if(!$result){
Files::addtolog(LOG_MYSQLI, $sql.'--->>>'.$this->mysqli->error);
throw new Exception($this->mysqli->error);
}
else{
return $this->mysqli->affected_rows;
}
}
@param @param @param @return
public function getPaginateData($sql, $pageSize, $curPage){
$result = $this->mysqli->query($sql);
$this->thisPage = $curPage;
$data = false;
if(!$result){
Files::addtolog(LOG_MYSQLI, $sql.'>>>'.$this->mysqli->error);
throw new Exception($this->mysqli->error);
}
else{
$totalData = $result->num_rows;
if($totalData <= $pageSize){
while($row = $result->fetch_assoc()){
$data[] = $row;
}
return $data;
}
else{
$result = null;
if($this->thisPage == 1)
$this->start = 0;
$this->start = ($this->thisPage*$pageSize)-$pageSize;
$pages = ceil($totalData/$pageSize);
$result = $this->mysqli->query($sql.' limit '.$this->start.','.$pageSize);
if(!$result){
Files::addtolog(LOG_MYSQLI, $sql.'--->>>'.$this->mysqli->error);
throw new Exception($this->mysqli->error);
}
else{
if($result->num_rows>0){
while($row = $result->fetch_assoc()){
$data[] = $row;
}
$padinate = array();
for($i=0;$i<=$pages;$i++){
if($i == $curPage)
$paginate['active'] = $i;
else{
$paginate[] = $i;
}
}
unset($paginate[0]);
$this->paginate = $paginate;
}
return $data;
}
}
}
}
public function paginate(){
return $this->paginate;
}
public function escape($data){
return $this->mysqli->real_escape_string($data);
}
public function multiQuery($sqls){
$result = $this->mysqli->multi_query($sqls);
if($result === false){
return false;
}
else{
while($this->mysqli->more_results() && $this->mysqli->next_result())
$this->mysqli->store_result();
return true;
}
}
public function last_id(){
return $this->mysqli->insert_id;
}
@param
public function returnPageData($name){
$sql = "select * from pages where name = '".$this->escape($name)."' LIMIT 1";
$result = $this->mysqli->query($sql);
if(!$result){
Files::addtolog(LOG_MYSQLI, $sql.'--->>>'.$this->mysqli->error);
throw new Exception($this->mysqli->error);
}
else{
if($result->num_rows>0){
while($row = $result->fetch_assoc()){
$data[] = $row;
}
return $data;
}
else{
return false;
}
}
}
}
?>
<?php
@author @email igor.vasinsky@gmail.com
@copyright
class BaseController{
const DEBUG = DEBUG;
public $model;
public $data = array();
public $paginateNumberPages = 10;
public $paginateButtonNext = true;
public $paginateButtonPrev = true;
public $paginateButtonNextText = 'дальше';
public $paginateButtonPrevText = 'назад';
public $paginateCurPage = 1;
public function __construct(){
}
public function setModel($route){
$class = $route.'Model';
$this->model = new $class;
return $this->model;
}
public function returnData($sql){
return $this->model->returnData($sql);
}
public function updateData($sql){
return $this->model->updateData($sql);
}
public function deleteData($sql){
return $this->model->deleteData($sql);
}
public function query($sql){
return $this->model->query($sql);
}
public function getPaginateData($sql, $pageSize, $curPage){
return $this->model->getPaginateData($sql, $pageSize, $curPage);
}
public function view($pathtotpl){
ob_start();
Files::load($pathtotpl);
$html = ob_get_contents();
ob_clean();
echo Snippet::parseSnippet($html, MODE);
}
public function paginate(){
return $this->model->paginate();
}
}
?>
куча библий
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.