Uma estrutura PHP leve e fácil de usar para criar sites e aplicativos da Web.
A arquitetura do Sippy mostra impressionante semelhança com o CodeIgniter, por isso chamamos de uma estrutura leve PHP. No entanto, lembre -se de que, como o Sippy é leve, ele não inclui muitas das funcionalidades que acompanham o CodeIgniter. Talvez possamos adicionar funcionalidade "plug-n-play" via plug-ins, controladores e bibliotecas. Para usar o Remover o "Sample" do arquivo de configuração no aplicativo/config/sample.config.php, para que seja aplicativo/config/config.php e preencha seus dados de configuração.
Sippy é baseado no padrão de desenvolvimento do Model-View-Controller.
Seu aplicativo Arquivos específicos vão na pasta "Aplicativo" (você não precisa tocar na pasta do sistema). Dentro da pasta do aplicativo, existem pastas para todas as entidades de aplicativos específicas:
Config Controllers HELHERS LOGS Modelos Visualizações de plugins
Quando o Sippy carrega arquivos, ele assume que eles estão nas pastas correspondentes. Portanto, coloque seus arquivos nas pastas corretas.
Incentivamos você a usar a pasta "ativos" na raiz para armazenar seus arquivos de recursos estáticos (CSS, JS etc), no entanto, você pode colocá -los em qualquer lugar. Você também pode usar a função site_url() para ajudar a incluir arquivos no seu html ou usar site_url('main/index') para acessar a página http://www.yoursite.com/main/index . Por exemplo:
< link rel =" stylesheet " href =" <?php echo site_url(); ?>assets/css/style.css " type =" text/css " media =" screen " />Todas as classes no Sippy usam nomes de PascalCase. Os nomes de arquivos associados devem ser os mesmos, exceto todos os minúsculos. Por exemplo, a classe principal da classe teria o nome do arquivo mainClass.php. As sublinhas nas classes também devem ser incluídas nos nomes de arquivos.
Por padrão, os URLs em Sippy são projetados para serem motores de busca e amigáveis ao humano. Em vez de usar a abordagem padrão "String de consulta" para os URLs sinônimos de sistemas dinâmicos, o Sippy usa uma abordagem baseada em segmento:
example.com/class/function/param por padrão index.php está oculto no URL. Isso é feito usando o arquivo .htaccess no diretório raiz.
Basta colocar arquivos em seu projeto para fácil autenticação: https://github.com/trafficinc/sippy-auth
Os controladores são a força motriz de um aplicativo com canção. Como você pode ver na estrutura da URL, os segmentos do URL são mapeados para uma classe e função. Essas classes são controladoras armazenadas no diretório "Aplicativo/Controlador". Por exemplo, o URL ...
example.com/main/login ... mapearia para o seguinte controlador com o nome do arquivo main.php:
<?php
class Main extends Sippy_controller {
function index () {
// This is the default function (i.e. no function is set in the URL)
}
function login () {
echo ' Hello World! ' ;
}
}... e a saída seria "Hello World!".
O controlador padrão e o controlador de erro pode ser definido no aplicativo/config/config.php
Observe que, se você precisar declarar um construtor, também deverá chamar o construtor pai como:
<?php
class Example extends Sippy_controller {
public function __construct ()
{
parent :: __construct ();
// Your own constructor code
}
}
?>Existem várias funções auxiliares que também podem ser usadas nos controladores. A maioria dessas funções pega o parâmetro $ nome da classe correspondente:
Erros de log e informações de depuração
Em seguida, você pode adicionar este código ao seu controlador para depuração.
log_message('error','Your log message');log_message('debug','Your log message');Exemplo de validação do controlador & CSRF Mensagens de Proteção e Flash/Erro de Flash: #Controller `` `requer system_dir. '/Validation.php'; ###### - classe - Protected $ validation;
function __constructor() {
$this->validation = new Validation;
}
$data['messSuccess'] = $this->flash->message('success');
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if ($_POST['csrf'] === $_SESSION['csrf_token']) {
$validator = $this->validation->go($_POST, [
'email' => 'required|min:5',
'password' => 'required',
]);
if (count($validator) > 0) {
$data['errors'] = $validator;
} else {
// ** Do Stuff **
$this->flash->message('success','Your flash message here');
$this->redirect('auth/login');
}
}
}
```
#visualizar
<h1>Login</h1>
<?php
if (isset($messSuccess)) {
$this->success_block($messSuccess);
}
if (isset($errors)) {
$this->error_block($errors);
}
?>
<form method="post" action="<?php echo site_url('auth/login'); ?>">
<input type="hidden" name="csrf" value="<?php echo $this->security->generate_csrf_token(); ?>"/>
<div class="form-group">
<label for="email">Email address</label>
<input type="email" name="email" class="form-control" id="email" placeholder="Email">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" name="password" class="form-control" id="password" placeholder="Password">
</div>
<button type="submit" class="btn btn-default">Login</button>
</form>
No Sippy, uma visualização é simplesmente uma página da web. Eles podem conter tudo que uma página da web normal incluiria. As visualizações são quase sempre carregadas pelos controladores. Por exemplo, se você tivesse uma visualização chamada main_view.php que continha o seguinte HTML:
<html>
<head>
<title>My Site</title>
</head>
<body>
<h1>Welcome to my Site!</h1>
</body>
</html>
. . . you would load it in a controller by doing the following:
// Controller file...
<?php
class Main extends Sippy_controller {
function index ()
{
$ template = $ this -> View ( ' main_view ' );
$ template -> render ();
}
} A classe View possui uma função auxiliar chamada set($key, $val) que permite passar variáveis do controlador para a visualização.
$ template = $ this -> View ( ' main_view ' );
$ template -> set ( ' someval ' , 17 );
$ template -> render ();... então, na opinião que você poderia fazer:
<?php echo $someval; ?>
... e a saída seria 17. Qualquer tipo de variável PHP pode ser passada para uma visão dessa maneira: matrizes, etc.
OU
No controlador, você pode chamar suas opiniões com dados que estarão disponíveis na visualização. Isso pode ser alcançado com maneiras. No controlador ...
$ header = array ( ' title ' => ' My Title ' , ' descr ' => ' Login Page ' , ' keywords ' => ' login,page,mysample ' );
$ template = $ this -> View ( ' main/index ' , $ d );Na vista, esses itens de matriz podem ser acessados como assim ...
<?php echo $title; ?>
Que mostrará o texto "meu título" e assim por diante pelo resto da matriz.
A maneira preferida de acessar dados nas visualizações é nomear a matriz de dados e acessá -los no controlador como assim ...
$ data [ ' body ' ] = " Hello World " ;
$ data [ ' heading ' ] = array ( ' title ' => ' My Title ' , ' descr ' => ' Login Page ' , ' keywords ' => ' login,page,mysample ' );
$ template = $ this -> View ( ' main/index ' , $ data );Então na vista ...
//body can be accessed
<?php echo $ body ; ?>
//heading can be accessed as an array
<?php
foreach ( $ heading as $ head ) {
echo $ head [ ' title ' ];
. . . etc.
}
?> Nos modelos Sippy, são classes que lidam com dados (geralmente de um banco de dados), é fornecido um banco de dados de amostra, carregue o arquivo testdb.sql no sequel pro ou na sua GUI SQL de escolha. Por exemplo:
<?php
class Example_model extends Sippy_model {
public function getSomething ( $ id )
{
$ id = $ this -> escape ( $ id );
$ result = $ this -> query ( " SELECT * FROM something WHERE id=' { $ id } ' " );
return $ result ;
}
}
?>... então em um controlador que você faria:
function index ()
{
$ example = $ this -> Model ( ' Example_model ' );
$ data [ ' something ' ] = $ example -> getSomething ( $ id );
$ template = $ this -> View ( ' main_view ' , $ data );
$ template -> render ();
} Agora, os resultados da sua consulta de banco de dados estariam disponíveis em sua opinião em US $ algum. Conectando -se ao banco de dados MySQL pode ser feito no seu arquivo config/config.php (lembre -se de renomear o arquivo sample.config.php ):
$ config [ ' db_host ' ] = '' ; // Database host (e.g. localhost)
$ config [ ' db_name ' ] = '' ; // Database name
$ config [ ' db_username ' ] = '' ; // Database username
$ config [ ' db_password ' ] = '' ; // Database passwordExistem várias funções auxiliares que também podem ser usadas nos modelos:
query($query) - Retorna uma variedade de resultados de uma consultagetrow($query) - Retorna uma linha da consultagetrowobj($query) - Retorna uma linha como objetoexecute($query) - Retorna o resultado direto de uma consultaescape($string) - Escape Strings antes de usá -las em consultasinsert($table, $dataArray) - Insira em uma tabela com uma matrizHá um assinado assado em HTML que você pode usar em controladores e visualizações via $ this-> html-> esc () e muito mais, no seu URL quando você executa o Sippy, vá para URL Main/Test para ver a funcionalidade disponível.
Existem dois tipos de recursos adicionais que você pode usar no Sippy.
Os ajudantes são classes que você pode usar e não se enquadra na categoria de "controladores". Geralmente, são classes que fornecem funcionalidade extra que você pode usar em seus controladores. Sippy vem com classes auxiliares (session_helper e url_helper), que são exemplos de como usar ajudantes.
Os plugins são literalmente qualquer arquivo php e podem fornecer qualquer funcionalidade desejada. Ao carregar um plug -in, você está simplesmente incluindo o arquivo php da pasta "plugins". Isso pode ser útil se você deseja usar bibliotecas de terceiros em seu aplicativo com canil.
Como usar, no controlador ...
protected $sess;
public function __construct() {
parent::__construct();
$this->Helper('Session_helper');
$this->sess = new Session_helper;
}
public function sample() {
$this->sess->set('email', '[email protected]'); //set session variable
$this->sess->get('email'); //get session variable
$this->sess->destroy(); //destroy session, good for logout method
}
Como usar, no controlador ...
public function __construct() {
parent::__construct();
$this->Plugin('Mailer');
}
public function sample() {
$send = Mailer::make()
->setTo('[email protected]', 'ToPerson')
->setFrom('[email protected]', 'Sippy')
->setSubject('Hello World Test')
->setMessage('Test message form sippy')
->setHtml()
->setWrap(100)
->send();
}
Para estender o Sippy, há uma opção para adicionar "ganchos". Os ganchos permitem estender toda a estrutura e/ou adicionar funcionalidade. Para ativar 'ganchos', vá no seu arquivo config.php e habilitá -lo. Então, no arquivo config/hooks.php, adicione sua função de gancho. Os ganchos são globais e há três deles; before_system (carrega antes das chamadas do sistema), before_controller (carrega antes dos controladores) e after_controller (carrega após os controladores). Aqui está um exemplo ...
// in hooks.php file
$ hook [ ' before_system ' ] = function () {
echo " hello world " ;
};Este gancho carregará globalmente esta função que diz "Hello World". Como você só pode carregar um gancho uma vez, se você tiver mais de uma função para ligar, pode empilhá -los como ...
//... your functions ... function func1() {...do stuff...}
$ hook [ ' before_system ' ] = function () {
func1 ();
func2 ();
func3 ();
};$ php bin/sippy.php [opções]
tentar
$ php bin/sippy.php -help