웹 사이트 및 웹 앱을 구축하기 위해 가볍고 사용하기 쉬운 PHP 프레임 워크.
Sippy의 아키텍처는 Codeigniter와 유사하게 눈에 띄기 때문에이를 가벼운 PHP 프레임 워크라고합니다. 그러나 Sippy는 가벼우므로 Codeigniter와 함께 제공되는 많은 기능이 포함되어 있지 않습니다. 플러그인, 컨트롤러 및 라이브러리를 통해 "Plug-N-Play"기능을 추가 할 수 있습니다. 사용하려면 Application/Config/Sample.config.php에서 구성 파일에서 "샘플"을 제거하여 Application/Config/Config.php이며 구성 데이터를 작성하십시오.
Sippy는 모델-뷰 컨트롤러 개발 패턴을 기반으로합니다.
응용 프로그램 특정 파일은 "응용 프로그램"폴더에 들어갑니다 (시스템 폴더를 터치 할 필요가 없음). 응용 프로그램 폴더 내부에는 모든 특정 응용 프로그램 엔티티에 대한 폴더가 있습니다.
구성 컨트롤러 도우미 로그인 모델 플러그인보기
시피가 파일을로드하면 해당 폴더에 있다고 가정합니다. 따라서 파일을 올바른 폴더에 배치하십시오.
루트의 "자산"폴더를 사용하여 정적 리소스 파일 (CSS, JS 등)을 저장하는 것이 좋습니다. site_url() 함수를 사용하여 html에 파일을 포함 시키거나 site_url('main/index') 사용하여 http://www.yoursite.com/main/index 페이지로 이동할 수도 있습니다. 예를 들어:
< link rel =" stylesheet " href =" <?php echo site_url(); ?>assets/css/style.css " type =" text/css " media =" screen " />Sippy의 모든 클래스는 Pascalcase Naming을 사용합니다. 관련 파일 이름은 모든 소문자를 제외하고 동일해야합니다. 예를 들어 클래스 메인 클래스에는 filename mainclass.php가 있습니다. 클래스의 밑줄도 파일 이름에도 포함되어야합니다.
기본적으로 Sippy의 URL은 검색 엔진과 인간 친화적으로 설계되었습니다. Sippy는 동적 시스템과 동의어 인 URL에 대한 표준 "쿼리 문자열"접근 방식을 사용하는 대신 세그먼트 기반 접근법을 사용합니다.
기본적으로 example.com/class/function/param 기본적으로 index.php는 URL에 숨겨져 있습니다. 루트 디렉토리의 .htaccess 파일을 사용하여 수행됩니다.
쉬운 인증을 위해 프로젝트에 파일을 넣으십시오 : https://github.com/trafficinc/sippy-auth
컨트롤러는시피 응용 프로그램의 원동력입니다. URL 구조에서 볼 수 있듯이 URL의 세그먼트는 클래스 및 기능에 매핑됩니다. 이 클래스는 "Application/Controller"디렉토리에 저장된 컨트롤러입니다. 예를 들어 URL ...
example.com/main/login ... filename 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! ' ;
}
}... 그리고 출력은 "Hello World!"일 것입니다.
기본 컨트롤러 및 오류 컨트롤러는 Application/Config/Config.php에서 설정할 수 있습니다.
생성자를 선언 해야하는 경우 다음과 같은 부모 생성자에게도 전화해야합니다.
<?php
class Example extends Sippy_controller {
public function __construct ()
{
parent :: __construct ();
// Your own constructor code
}
}
?>컨트롤러에서도 사용할 수있는 몇 가지 헬퍼 기능이 있습니다. 이러한 기능의 대부분은 해당 클래스의 매개 변수 $ 이름을 사용합니다.
로그 오류 및 디버깅 정보
그런 다음 디버깅을 위해이 코드를 컨트롤러에 추가 할 수 있습니다.
log_message('error','Your log message');log_message('debug','Your log message');예제 컨트롤러 유효성 검증 및 CSRF 토큰 보호 및 플래시 오류/성공 메시지 : #controller`````System_Dir Questing '/validation.php'; ###### - 클래스 - 보호 된 $ 유효성;
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');
}
}
}
```
#보다
<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>
Sippy에서보기는 단순히 웹 페이지입니다. 일반적인 웹 페이지에 포함 할 모든 것을 포함 할 수 있습니다. 보기는 거의 항상 컨트롤러에 의해로드됩니다. 예를 들어 다음 html이 포함 된 main_view.php라는 뷰가있는 경우
<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 ();
}
} View 클래스에는 컨트롤러에서 뷰로 변수를 전달할 수있는 set($key, $val) 라는 도우미 함수가 있습니다.
$ template = $ this -> View ( ' main_view ' );
$ template -> set ( ' someval ' , 17 );
$ template -> render ();... 그런 다음 관점에서 할 수 있습니다.
<?php echo $someval; ?>
... 그리고 출력은 17입니다. 모든 종류의 PHP 변수는 이러한 방식으로보기로 전달 될 수 있습니다 : 배열 등.
또는
컨트롤러에서는 뷰에서 뷰를 호출하여 뷰에서 사용할 수있는 데이터를 사용할 수 있습니다. 이것은 방법으로 달성 될 수 있습니다. 컨트롤러에서 ...
$ header = array ( ' title ' => ' My Title ' , ' descr ' => ' Login Page ' , ' keywords ' => ' login,page,mysample ' );
$ template = $ this -> View ( ' main/index ' , $ d );보기에서,이 배열 항목은 그렇게 액세스 할 수 있습니다 ...
<?php echo $title; ?>
나머지 배열에 대한 텍스트 "내 제목"등이 표시됩니다.
보기에서 데이터에 액세스하는 선호하는 방법은 데이터 배열의 이름을 지정하여 컨트롤러에서 액세스하는 것입니다.
$ data [ ' body ' ] = " Hello World " ;
$ data [ ' heading ' ] = array ( ' title ' => ' My Title ' , ' descr ' => ' Login Page ' , ' keywords ' => ' login,page,mysample ' );
$ template = $ this -> View ( ' main/index ' , $ data );그런 다음보기에서 ...
//body can be accessed
<?php echo $ body ; ?>
//heading can be accessed as an array
<?php
foreach ( $ heading as $ head ) {
echo $ head [ ' title ' ];
. . . etc.
}
?> SIPPY 모델에는 데이터를 다루는 클래스 (일반적으로 데이터베이스에서)가 제공되면 샘플 데이터베이스가 제공되며 TestDB.SQL 파일을 Sequel Pro 또는 SQL GUI에로드하십시오. 예를 들어:
<?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 ;
}
}
?>... 그런 다음 컨트롤러에서 다음을 수행 할 수 있습니다.
function index ()
{
$ example = $ this -> Model ( ' Example_model ' );
$ data [ ' something ' ] = $ example -> getSomething ( $ id );
$ template = $ this -> View ( ' main_view ' , $ data );
$ template -> render ();
} 이제 데이터베이스 쿼리의 결과는 $ vidVal에서 귀하의 견해에서 사용할 수 있습니다. mySQL 데이터베이스에 연결하는 것은 config/config.php 파일에서 수행 할 수 있습니다 ( 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 password모델에서도 사용할 수있는 몇 가지 헬퍼 기능이 있습니다.
query($query) - 쿼리에서 결과 배열을 반환합니다.getrow($query) - 쿼리에서 한 행을 반환합니다getrowobj($query) - 행을 객체로 반환합니다execute($query) - 쿼리에서 직접 결과를 반환합니다escape($string) - 쿼리로 사용하기 전에 스틱을 탈출하십시오insert($table, $dataArray) - 배열이있는 테이블에 삽입HTML 헬퍼에는 컨트롤러 및 뷰에서 $ this-> html-> esc ()를 통해 사용할 수있는 구운이 있습니다.
Sippy에서 사용할 수있는 두 가지 유형의 추가 리소스가 있습니다.
도우미는 "컨트롤러"범주에 속하지 않는 클래스입니다. 일반적으로 컨트롤러에서 사용할 수있는 추가 기능을 제공하는 클래스입니다. Sippy에는 도우미를 사용하는 방법의 예인 헬퍼 클래스 (Session_Helper 및 URL_HELPER)가 제공됩니다.
플러그인은 말 그대로 모든 PHP 파일이며 원하는 기능을 제공 할 수 있습니다. 플러그인을로드하면 단순히 "플러그인"폴더에서 PHP 파일을 포함합니다. 시피 응용 프로그램에서 타사 라이브러리를 사용하려는 경우 유용 할 수 있습니다.
컨트롤러에서 사용하는 방법 ...
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
}
컨트롤러에서 사용하는 방법 ...
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();
}
Sippy를 확장하려면 "후크"를 추가 할 수있는 옵션이 있습니다. 후크를 사용하면 전체 프레임 워크를 확장하거나 기능을 추가 할 수 있습니다. 'hooks'를 활성화하려면 config.php 파일로 이동하여 활성화하십시오. 그런 다음 config/hooks.php 파일에서 후크 기능을 추가하십시오. 고리는 전 세계적이며 그 중 세 가지가 있습니다. before_system (시스템 호출 전로드 after_controller , before_controller (컨트롤러 전로드) 및 컨트롤러 후로드). 여기 예입니다 ...
// in hooks.php file
$ hook [ ' before_system ' ] = function () {
echo " hello world " ;
};이 후크는“Hello World”라는이 기능을 전 세계적으로로드합니다. 한 번만 후크를로드 할 수 있으므로 전화 할 기능이 둘 이상인 경우 그렇게 쌓을 수 있습니다 ...
//... your functions ... function func1() {...do stuff...}
$ hook [ ' before_system ' ] = function () {
func1 ();
func2 ();
func3 ();
};$ php bin/sippy.php [옵션]
노력하다
$ php bin/sippy.php -help