
MVPHP是一个简单,易于黑客入侵的框架,用于开发最小的PHP Web应用程序。许多PHP框架具有陡峭的学习曲线,并深深地抽象了它们的功能。 MVPHP旨在使事情变得简单,易于且更接近纯PHP。它还提供了一个简单且可自定义的Bootstrap实现,供您开始创建前端而又不麻烦。
其中包括:
不是什么:
MVPHP不是Laravel,Symfone,Zend等的良好且经过良好测试的PHP框架。此框架旨在快速开发符合符合性的PHP Web应用程序,其开销很小,意见很少,并且很大的灵活性。使用它自己的风险!如果您遇到错误或有任何建议,请创建问题。
composer install 。npm install -g gulp-cli到全球安装GULP CLInpm install以安装我们需要构建前端文件所需的工具。gulp来构建前端文件。public目录。该框架背后的基本思想是从一个可以处理所有基本功能的简单类开始。
app.php是首先加载我们的config.php设置的引导程序文件,然后通过创建$app对象来实例化我们的主类。还为所有与身份验证相关的功能创建了$auth对象。我们将主要对象( $app->auth )的属性指向参考$auth ,以使事情保持简单并使其在$app的范围内访问。
$ app = new MVPHP ();我们所做的几乎所有事情都会利用这个$app对象。
app.php还需要root目录中的routes.php文件,我们将在其中定义初始路由。您将在此文件中看到几个工作示例。
有几种定义路线的方法以及应该做什么:
$ app -> route ( ' /example ' , function () use ( $ app ) {
// Do stuff here
});闭合是一个匿名功能,当请求URI匹配该路由时将运行。为了使我们的主要MVPHP类中的方法在此匿名函数中可访问,我们指定use ($app) 。这将导入$app变量到匿名函数的变量范围中。
$ app -> route ( ' /example/{id} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
});您可以指示带有括号的URI中的可变参数。它们在关联数组中标识,其关键是路由中定义的名称,而值是请求URI中提供的实际值。
$ app -> route ( ' /example/{id:int} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
});您还可以通过使用结肠和约束类型来定义匹配URI参数的约束。删除约束值将默认为“字符串”约束。
约束选项:
正则表达示例:
与PHP的preg_match函数一起使用的任何表达式都将在此处使用。在实施表达式之前,此工具可用于测试表达式。
// This example requires the ID value to be a 5 digit number
$ app -> route ( ' /example/{id:regex=^[0-9]{5}$} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
});
// This example requires the ID to be lower or uppercase letters between 1-10 characters long
$ app -> route ( ' /example/{id:regex=^[a-zA-Z]{1,10}$} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
}); $ app -> route ( ' /example ' );有时,您的应用程序会有很多路由,您宁愿将它们整理到单独的文件中,而不是将它们全部放在routes.php文件中。
如果您注册这样的路由,则MVPHP将在controllers目录中查找具有相同名称的相关文件。在上面的示例中,注册到/example路由将在控制器目录中查找example.php文件并需要它。
现在,您可以注册与example.php文件中的/example端点相关的更多路由。例如,您的controllers/example.php文件看起来像这样:
// Reiterate this route and do something with it this time
$ app -> route ( ' /example ' , function () use ( $ app ) {
// Do stuff
});
// Register any other related route endpoints here
$ app -> route ( ' /example/stuff ' , function () use ( $ app ) {
// Do stuff
});如果要使用带有不同名称的特定文件,只需将其指定为第二个参数:
$ app -> route ( ' /example ' , ' myfile ' );这将尝试需要controllers/myfile.php 。
路线,控制器和模型的概念在此框架中非常宽松。为了简单起见,我们避免使用一堆不同的类。在此框架上下文中,控制器应该只是在定义模型的请求和功能之间进行调解的地方。
查看controllers目录中的文件以获取示例。
我们可以使用action方法测试不同的请求方法:
$ app -> route ( ' /example ' , function () use ( $ app ){
if ( $ app -> action ( ' post ' ) ) {
// Do stuff on POST
} elseif ( $ app -> action ( ' get ' ) ) {
// Do stuff on GET
}
});视图模板存储在views目录中。我们可以调用这样的视图(通常来自控制器):
$ app -> view ( ' my-template ' );这只是在浏览文件夹中查找my-template.php ,需要文件。如果模板文件中有变量,则必须将这些变量传递到这样的视图方法中:
$ my_var1 = ' Stuff I want to echo in the template. ' ;
$ app -> view ( ' my-template ' , [
' my_var1 ' => $ my_var1
]);现在,在视图模板文件中可以访问$my_var1 。
我们不会打扰模板引擎(因为PHP本质上是一种模板语言)。只需像这样访问您的html中的杂物:
< p > < ?=$my_var1;? > </ p >有条件的陈述:
< ?php if ( isset($my_var1) ):? >
< p > < ?=$my_var1;? > </ p >
< ?php endif;? >你明白了。纯且简单的PHP模板。
默认情况下,前端使用bootstrap。您可以在frontend目录中找到所有源文件。从frontend文件夹构建源文件的说明是在项目root的gulpfile.js文件中定义的。
当您第一次在项目根中运行gulp时,将SCSS和JavaScript文件组合在一起,缩小,复制到public文件夹。我们使用的供应商JS和CSS文件(JQuery,Bootstrap等)也被复制到public文件夹中。
在编辑frontend目录中的SCSS和JavaScript文件之前,您可以在Project Root中运行gulp watch 。 Gulp将注意您将保存到文件保存的任何更改,并在您使用时保存它们。
models/Documents.php类提供了一种从HTML源编写PDF文件的方法。该类使用WKHTMLTOPDF,可能需要您在这些依赖项起作用之前安装这些依赖项:
sudo apt-get install xfonts-base xfonts-75dpi urw-fonts
将来将添加更多PDF和其他“文档”相关功能。
通过查看包含我们主类的models/MVPHP.php文件,深入研究其他可用的实用程序方法。将来还会添加更多!