A SunHill Framework é uma estrutura de desenvolvimento de aplicativos PHP simples, rápida e poderosa que permite desenvolver aplicativos mais modernos usando o padrão MVC (Model - View - Controller).
htaccess.txt para o .htaccess (importante)System/Config.php e edite seu banco de dados, cache e configurações do sistema.Veja abaixo para obter mais detalhes.
root
├── App
│ ├── Controllers
│ │ ├── Error.php
│ │ └── Home.php
│ ├── Models
│ │ ├── Error.php
│ │ └── Home.php
│ └── Views
│ ├── Error.php
│ └── Home.php
├── Core
│ ├── App.php
│ ├── Controller.php
│ ├── Model.php
│ └── View.php
├── Public
│ ├── cache
│ ├── css
│ ├── img
│ └── js
├── System
│ ├── Config.php
│ ├── SunCache.php
│ ├── SunDB.php
│ └── SunSitemap.php
├── .htaccess
├── index.php
└── init.php
App/Controller : crie seus controladores personalizados nesta pasta.
App/Models : Crie seus modelos personalizados nesta pasta.
App/Views : Crie suas visualizações personalizadas nesta pasta.
Core : esta pasta contém arquivos principais de aplicativo, modelo, visualização e controlador. Todos os arquivos de modelo, visualização e controlador personalizados herdam destes. Não faça alterações nesses arquivos, se não precisar.
Public : Carregue todos os seus arquivos personalizados (CSS, JS, IMG, Bootstrap, etc.) nesta pasta. Suas visualizações personalizadas usarão esses arquivos.
System : Esta pasta contém classes do sistema e arquivos de configuração. Faça suas alterações apenas no arquivo de configuração.
Abra o arquivo System/Config.php e faça suas alterações.
Configurações do banco de dados:
define ( ' DB_HOST ' , ' localhost ' ); // database host
define ( ' DB_PORT ' , ' 3306 ' ); // database port
define ( ' DB_DBNAME ' , '' ); // database name
define ( ' DB_USERNAME ' , '' ); // database username
define ( ' DB_PASSWORD ' , '' ); // database passwordConfigurações de cache:
$ cacheConfig = [
' cacheDir ' => ' /../Public/cache ' , // cache folder path
' fileExtension ' => ' html ' , // cache file extension
' storageTime ' => 24 * 60 * 60 , // storage time (seconds)
' contentMinify ' => true , // content minification
' showTime ' => true , // show page load time
' sefUrl ' => true // website sef url status
];Configurações do sistema:
define ( ' SYS_PHPERR ' , true ); // php errors (show or hide, true / false)
define ( ' SYS_SYSERR ' , false ); // system errors (shor or hide, true / false)
define ( ' SYS_PGCACHE ' , false ); // page caching (true / false)
define ( ' SYS_CHEXCLUDE ' , []); // excluded pages for page caching (array)
define ( ' SYS_HOMEPAGE ' , ' home ' ); // home page (index, home, main, etc.)
define ( ' SYS_ERRPAGE ' , ' error ' ); // error page (if requested page does not exist, redirect to this page)URL de amostra:
https://www.web_address.com/[controller_name]/[method_name]/[parameters]
Ligue para uma página (controlador):
https://www.sunhillint.com/user
Este endereço chamará o controlador User .
Ligue para uma página (controlador) com ação (método):
https://www.sunhillint.com/user/list
Este endereço chamará o list do Controlador User e Executará.
Ligue para uma página (controlador) com ação (método) e parâmetros:
https://www.sunhillint.com/user/update/3
Este endereço chamará o controlador User e executará o método update com 3 parâmetro.
Os controladores respondem às ações do usuário (enviando formulários, clicando em links etc.). Controladores são classes que estendem a classe Core Controller.
Os controladores são armazenados na pasta App/Controllers . Uma amostra de controladores de casas e erros está incluída. As classes de controlador precisam estar no espaço para nome App/Controllers . Você pode adicionar subdiretos para organizar seus controladores; portanto, ao adicionar uma rota para esses controladores necessários para especificar o espaço para nome.
Conteúdo do arquivo do controlador de amostra (sem acesso ao banco de dados, página estática):
public function show () {
require_once ( $ this -> view ); // include view file (with $result content)
}Conteúdo do arquivo do controlador de amostra (com acesso ao banco de dados, página dinâmica):
public function show () {
if (! empty ( $ this -> model )) { // if this page needs database
$ result = ( $ this -> model )-> show (); // call model class' show method
}
require_once ( $ this -> view ); // include view file (with $result content)
}As classes do controlador contêm métodos que são as ações. Para criar uma ação, adicione o nome do método no controlador e use -o no URL (parâmetros de rota).
URL de amostra:
https://www.web_address.com/[controller_name]
Todas as páginas devem ter um arquivo do controlador e show o método deve estar nele.
As visualizações são usadas para exibir informações. Exibir arquivos vão na pasta App/Views . Nenhum acesso ao banco de dados ou algo assim deve ocorrer em um arquivo de visualização.
As visualizações estendem a classe CoreView e se sua visualização (página) precisar de acesso ao banco de dados, seus valores serão encaminhados a partir do arquivo do controlador.
Exemplo de visualização do arquivo de arquivo para vários registros (tags in Inside HTML):
foreach ( $ result as $ row ) {
echo " ... " ;
}ou (para um registro):
echo $ result [ 0 ][ ' content ' ];Todas as páginas devem ter um arquivo de visualização.
Os modelos são usados para obter e armazenar dados em seu aplicativo. Eles não sabem nada sobre como esses dados serão apresentados nas opiniões. Os modelos estendem a classe CoreModel e usam PDO para acessar o banco de dados (incluindo a classe Sundb). Eles são armazenados na pasta App/Models .
Todas as páginas devem ter um arquivo de modelo (mesmo que esteja vazio) e o método show deve estar nele.
Usando a classe PDO do Sundb através do Modelo Principal:
$ result = $ this -> query ( ' SELECT * FROM table_name ' ); // send query to the main model
return $ result ; // return the result to the controllerUsando a classe PDO do Sundb diretamente:
$ result = ( $ this -> pdo )-> select ( ' table_name ' )
-> run (); // select all records from the table
return $ result ; // return the result to the controllerConsulte a classe PDO do Sundb para uso detalhado.
A estrutura inclui um sistema de cache de página especial (classe Suncache).
O sistema de cache pode ser ativado/desativado no arquivo System/Config.php :
define ( ' SYS_PGCACHE ' , true ); // page caching (true / false) As páginas excluídas podem ser definidas no arquivo System/Config.php :
define ( ' SYS_CHEXCLUDE ' , [ ' home ' , ' error ' ]); // excluded pages for page caching (array) As configurações de cache podem ser alteradas no arquivo System/Config.php :
$ cacheConfig = [
' cacheDir ' => ' /../Public/cache ' , // cache folder path
' fileExtension ' => ' html ' , // cache file extension
' storageTime ' => 24 * 60 * 60 , // storage time (seconds)
' contentMinify ' => true , // content minification
' showTime ' => true , // show page load time
' sefUrl ' => true // website sef url status
];Consulte a aula do Suncache para uso detalhado.