Janggelan é uma estrutura PHP inesperada que dá facilidade. É simples, mas poderoso e agradável de usar. Assim como outras estruturas, você não terá dificuldade ao tentar entender Janggelan.
Janggelan é projetado e focada com base no conceito de MVC. Portanto, tentamos evitar a fusão do sistema MVC com outras ferramentas que podem ajudá -lo no desenvolvimento, porque pode reduzir o desempenho. Continuamos o inclui, é claro, para ajudar seu desenvolvimento, mas ele virá com capas diferentes.
Leia a documentação para obter mais informações.
Sabemos que não podemos terminar essa estrutura perfeitamente e talvez não tenha correspondido ao que você deseja. Mas sempre tentamos terminar melhor e torná -lo inesperado para você. Você pode contribuir conosco.
Adicionado algumas novas ferramentas.
Reescrito todos os scripts de Janggelan para um novo desempenho melhor.
Reduzir algumas cargas de servidor.
Adicionado alguns novos métodos Model : where() , exec() , execute() .
Documentação adicionada.
Usou cache e compressão gZip em .htaccess .
Php 7
Extensão de PDO PHP
Faça o download do arquivo de Janggelan, extraia -o para o diretório do seu aplicativo.
Se você deseja publicar ou instalar o Janggelan para hospedagem compartilhada, a maneira mais segura de fazer é colocar os arquivos e diretórios de Janggelan dentro da server root e mover todo o conteúdo da pasta public em public_html ou www .
Você executará seu aplicativo no diretório public / public_html / www .
Se você encontrou problemas após a instalação, verifique as permissões de arquivo.
__ backend/
|__ .secrets/
|__ config/
|__ framework/
|__ global/
|__ register/
|__ vendor/
|__ autoload.php
|__ composer.json
|__ force.uri
__ public/
|__ assets/
|__ .htaccess
|__ index.php
__ worksheet/
|__ controllers/
|__ model/
|__ providers/
|__ tools/
|__ views/
|__ requests.php
Na primeira vez, vamos executar o Janggelan em seu servidor. Verifique se o seu sistema foi feito com os System Requirements e a installation acima.
Vá para o diretório de aplicativos que os arquivos Janggelan colocavam. Entre na pasta public . Como exemplo, no Linux, você pode fazer isso:
cd /var/www/html/your_application/publicAbra um servidor localhost:
php -S localhost:8000Ou você pode fazer acima diretamente com este comando:
php -S localhost:8000 -t /var/www/html/your_application/publicAgora, abra seu navegador e visite localhost: 8000.
Em Janggelan, você chamará isso de requests . Em outras estruturas de PHP, como o Laravel, isso chamado como routes . Todas as solicitações em Janggelan tratavam na worksheet/requests.php . Para criar uma nova solicitação, vá para esse arquivo. Lá você verá um exemplo request como este:
$ this -> request ( ' GET / @Hello::world ' ); O exemplo acima significa: " / URI / com world método Hello solicitação GET . Com base no exemplo, agora você pode criar suas solicitações personalizadas com estas opções: (argumento ou parâmetro 1 é separado pelo space ):
// Redirected to Controller.
// Request method can be 'GET' or 'POST'
$ this -> request ( ' GET /home @Hello::world ' );
// Redirected to View.
$ this -> request ( ' GET /home (viewName) ' );
// Redirected to Controller with Protected Rule 'login'.
$ this -> request ( ' GET /home @Hello::world !!login ' );
// Redirected to View with Protected Rule 'login'.
$ this -> request ( ' GET /home (viewName) !!login ' );
// Will proceed the Closure or Callback directly.
$ this -> request ( ' GET /home ' , function ()
{
// Do some stuff...
});
// Will proceed the Closure or Callback directly with Protected Rule 'login'.
$ this -> request ( ' GET /home !!login ' , function ()
{
// Do some stuff...
}); Você aprenderá mais sobre Protected Rule mais tarde. Observe, use Closure ou Callback somente quando estiver em teste. Sempre recomendamos o uso de View ou Controller como redirecionamento.
Os Controller são colocados em worksheet/controllers . Tente criar um novo Controller com a criação de um novo arquivo, assuma que o nome do arquivo é MyController.php . Então, no MyController.php , escreva este estilo básico Controller :
<?php namespace controller ;
class MyController extends framework parents Controller
{
public function welcome ()
{
echo ' Welcome to my Controller. ' ;
}
} Na worksheet/requests.php , adicione uma nova solicitação que procederá o Controller .
$ this -> request ( ' GET /test @MyController::welcome ' ); Agora, visite /test no seu navegador. Se estiver tudo bem, você verá a saída: Welcome to my Controller. . O nome do arquivo Controller deve ser o mesmo e corresponder ao nome da classe Controller . Além disso, você deve cuidar do Namespace . Se você criar controlador dentro do novo diretório como este:
__ controllers/
|__ my_new_folder/
|__ MyController.php
Em seguida, o Namespace do seu Controller deve ser assim: (Isso também se aplica ao sistema de namespaces)
<?php namespace controllers my_new_folder ;
class MyController extends framework parents Controller
{
//
} Você pode evitar estender frameworkparentsController se o seu Controller não for necessário para usar algumas funções integradas, como $this->LOAD_VIEW() , $this->GET_RULE() , etc.
Model S são colocados em worksheet/models . Model é usado para se comunicar com o banco de dados. Portanto, ao criar um Model , verifique se ele está correspondendo aos dados no banco de dados. Para usar Model , você deve configurar sua configuração de banco de dados no backend/.secrets/.db ou consulte a documentação sobre Configuring Database .
Depois que acima é feito, vamos tentar criar um Model . Primeiro, crie um novo arquivo na worksheet/models . Suponha que o nome do arquivo seja User.php . Em seguida, escreva o conteúdo do arquivo com este estilo Model básico:
<?php namespace model ;
class User extends framework parents Model
{
// This is your table name. It is required by system.
protected static $ table = ' user ' ;
// This is your table columns. Only required if you want to create new
// table into Database.
protected static $ columns = [
' id ' => ' INT(11) AUTO_INCREMENT PRIMARY KEY ' ,
' username ' => ' VARCHAR(255) NOT NULL ' ,
' password ' => ' VARCHAR(255) NOT NULL '
];
} No seu Controller , ligue para a classe Model :
<?php namespace controller ;
use model User ;
class MyController extends framework parents Controller
{
public function workingWithModel ()
{
// Initialize object of Model 'User'.
// Now you can use your Model.
$ user = new User ;
}
} Se você não possui uma tabela com user do nome antes, basta usar o método create() para criar a tabela automaticamente quando você executa o método Controller workingWithModel() .
$ user = new User ;
// this will create new table into Database with columns and properties that
// already defined on 'protected static $columns'.
$ user -> create (); Quase feito, agora você só precisava usar o Model com algumas funções ou métodos embutidos.
$ user = new User ;
// Open Database connection manually. Only needed if 'auto_connect' config is FALSE.
$ user -> open ();
// Close Database connection manually. Only needed if 'auto_connect' config is FALSE.
$ user -> close ();
// Delete all data in Model 'User' | table 'user'.
$ user -> delete ();
// Delete all data in Model 'User' | table 'user' | where id = 1 and username = name.
$ user -> delete ([ ' id ' => 1 , ' username ' => ' name ' ]);
// Insert new data to Model 'User' | table 'user' | to column username with value
// 'Linus Torvald'.
$ user -> insert ([ ' username ' => ' Linus Torvald ' ]);
// Update data in Model 'User' | table 'user' | where id = 1. Update username
// to value 'Linus Torvald'.
$ user -> update ([ ' username ' => ' Linus Torvald ' ], [ ' id ' => 1 ]);
// Get all data from Model 'User' | table 'user'.
$ user -> get ();
// Get 5 data results from Model 'User' | table 'user'.
$ user -> get ( 5 );
// Select all data from column 'username' of Model 'User' | table 'user'.
$ user -> select ( ' username ' )-> get ();
// Get data from column 'username' of Model 'User' | table 'user' | take 4 data results
// start from data number 2.
$ user -> range ( 4 , 2 )-> get ();
// Get data from Model 'User' | table 'user' | based on the clause 'WHERE id = 1'.
// You can do anything inside of 'clause()'.
$ user -> clause ( ' WHERE id = 1 ' )-> get ();
// Select data from column 'username' of Model 'User' | table 'user' |
// where id = 1 AND username = 'Linus Torvald'.
$ user -> where ([ ' id ' => 1 , ' username ' => ' Linus Torvald ' ])-> get ();
// Exec query.
// 'query' is anything sql queries such as 'DELETE * FROM' or 'SELECT *'.
$ user -> exec (query);
// Execute query with bind params (PDO prepare statement).
$ user -> execute (query, bindParams);
// You can custom you queries with chaining functions or methods like this:
$ user -> select ( ' username ' )-> range ( 4 , 2 )-> get ();
// Using prepare statement
$ user -> clause ( ' WHERE id=:id ' )-> bindParams ([ ' id ' => 1 ])-> get (); View são colocadas em worksheet/views . Basicamente, View é um modelo, pode ser o código HTML ou PHP. Nada regras especiais para View . Mas, em Janggelan, a extensão View é sempre .php . Você pode escrever qualquer código dentro da View . Para usar uma View , você só precisa chamá -la. Exemplo:
// Calling View 'example.php' on requests.php
// Note that you cannot calling View with Closure or Callback.
$ this -> request ( ' GET / (example) ' );
// Calling View 'example.php' inside folder 'new_folder' on requests.php
$ this -> request ( ' GET / (new_folder/example) ' );
// Calling View 'example.php' on Controller
$ this -> LOAD_VIEW ( ' example ' );
// Calling View 'example.php' inside folder 'new_folder' on Controller
$ this -> LOAD_VIEW ( ' new_folder/example ' ); Se você deseja colocar View worksheet/views externas em todos os lugares dentro do diretório public ou public_html ou www , basta adicionar / :
$ this -> request ( ' GET / (/example) ' );
$ this -> LOAD_VIEW ( ' /example ' ); Isso dirá ao sistema para encontrar a View em public/example.php ou public_html/example.php ou www/example.php .
Agora, como passar dados em View . Na verdade, você pode fazer isso simples. Basta compact() os dados: observe que a passagem de dados somente possível ao chamar View do Controller .
$ data = ' This is data ' ;
$ this -> LOAD_VIEW ( ' example ' , compact ( ' data ' )); Em seguida, no example.php de arquivo View , basta ligar para a variável:
<p> <?php echo $ data ; ?> </p> O Janggelan fornece algumas ferramentas que você pode usar e talvez útil para seus casos de desenvolvimento. Eles são colocados em worksheet/tools . Para usá -los, só tenho que chamar o nome da classe. Exemplo:
<?php namespace controller ;
use tool Validation ;
class Example extends framework parents Controller
{
private $ validation ;
function __construct ()
{
$ this -> validation = new Validation ;
}
} Protected Rule é um sistema em Janggelan para proteger sua page , View ou Uri , assim como o sistema de login. Protected Rule armazenou dados anônimos que sempre são verificados quando request usava este sistema. Se o usuário que a visita não tiver os dados anônimos válidos, o usuário será redirecionado automaticamente para target que já foi definido antes. Isso facilitará a proteção das páginas que deseja torná -lo privado ou apenas para determinados usuários.
Para criar uma nova Protected Rule , vá para o arquivo de configuração no backend/config/protected.php . Você pode fazer mais de uma Protected Rule . Exemplo:
<?php return [
// FALSE means, system will uses SESSION to store protected_rule data. Set it TRUE
// if you want to store the data in COOKIE.
' use_cookie ' => FALSE ,
' protected_rule ' => [
// Creating 'Protected Rule' with name 'login'.
// If the data is not valid, then redirect to Controller 'Example'
// method 'protected.'
' login ' => [
' on_false ' => [
' controller ' => ' Example ' ,
' method ' => ' protected '
],
],
// Creating 'Protected Rule' with name 'protect'.
// If the data is not valid, then redirect to View 'example'.
' protect ' => [
' on_false ' => [
' view ' => ' example ' ,
],
],
// Creating 'Protected Rule' with name 'myRule'.
// If the data is not valid, then redirect to uri '/wrong'.
' myRule ' => [
' on_false ' => ' /wrong '
],
]
]; Em seguida, para aplicar essa Protected Rule , vá para worksheet/requests.php e adicione nova Request : (a sintaxe é !! ):
// Applying Protected Rule 'login'.
$ this -> request ( ' GET / @Example::example !!login ' );
$ this -> request ( ' GET / (viewName) !!login ' );
$ this -> request ( ' GET / !!login ' , function ()
{
echo ' If you see this, then you are an Admin. ' ;
}); Como definir dados válidos para o usuário ou Protected Rule ? Basta usar isso funções ou métodos construídos.
$ this -> SET_RULE ( $ name ); Você também pode transmitir valores para dados Protected Rule :
$ this -> SET_RULE ( $ name , $ values ); Aqui estão funções ou métodos completos para Protected Rule :
// Check valid data for user or 'Protected Rule';
$ this -> CHECK_RULE ( $ name );
// Set new valid data for user or 'Protected Rule'.
$ this -> SET_RULE ( $ name , $ data = '' );
// Get 'Protected Rule' data.
$ this -> GET_RULE ( $ name );
// Delete valid 'Protected Rule' data.
$ this -> DESTROY_RULE ( $ name ); Para configurar seu banco de dados, vá para backend/.secrets/.db . Lá contém um objeto para configurar seu banco de dados:
{ "DB_HOST" : " " , "DB_NAME" : " " , "DB_USERNAME" : " " , "DB_PASSWORD" : " " }Defina em todos os valores -chave com as configurações do seu banco de dados.
Por padrão, existe Janggelan URI para o diretório. Se o URI referente a uma pasta ou diretório do ISSET, o sistema Janggelan não será iniciado, porque foi redirecionado para essa pasta ou diretório. Se você não quiser que isso aconteça, abra o arquivo backend/force.uri e reescreva o valor antigo para TRUE .
Dali Kewara | [email protected]
Janggelan é uma estrutura de PHP de código aberto licenciado sob a licença do MIT.