1. Go to this page and download the library: Download tahona/spark-mvc library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
/**
* @Configuration()
* @EnableApcuBeanCache(resetParam="reset")
*/
class MyAppConfig {
}
/**
* @Controller
*/
class MyAppController {
/**
* @Path("/index", method="GET")
*/
public function indexAction(Request $request) {
return new PlainViewModel("Hello World");
}
/**
* @Path("/save", method="POST")
*/
public function saveAction(SomeForm $form, Request $req, $beanName) {
return new JsonViewModel(array(
"user"=>"TODO"
));
}
}
/**
* @RestController
*/
class MyRestController {
/**
* @Path("/index")
*/
public function indexAction(Request $request) {
return new SomeResultDto();
}
}
class MyAppController extends Controller {
/**
* @Path("/index")
*/
public function indexAction() {
return new PlainViewModel("Hello World");
}
/**
* @Path("/get")
*/
public function getAction() {
return new JsonViewModel(array(
"user"=>"TODO"
));
}
/**
* @Path("/newView")
*/
public function showNewViewAction() {
return new ViewModel(array(
"user"=>"TODO"
));
}
}
/**
* @Service()
*/
class UserService {
//...some methods
}
/**
* @Component()
*/
class AddUserHandler {
/**
* @Inject()
* var UserService
*/
private $userService;
/**
* @PostConstruct()
*/
public function init() {
$this->userService->doSomething();
}
}
class UserController extends Controller {
/**
* @Inject()
* var UserService
*/
private $userService;
/**
* @Path("/newView")
*/
public function showNewViewAction() {
return new ViewModel(array(
"users"=>$this->userService->getAllUsers()
));
}
}
/**
* @Controller
*/
class UserController {
/**
* @Path("/newView")
*/
public function showNewViewAction(Request $request, UserService $userService ) {
return new ViewModel(array(
"users"=>$userService->getAllUsers()
));
}
}
/**
* @Inject
*/
private $beanProvider;
public function getMenuModules() {
return $beanProvider->getByType(MenuModule::class);
}
/**
* @Component
*/
class UserInterceptor implements HandlerInterceptor {
/**
* @Inject
*/
private $someUserHolder;
public function preHandle(Request $request) {
//Do something like redirect or add values to request or auto-conversion(id to entity);
}
public function postHandle(Request $request, ViewModel $viewModel) {
$viewModel->add("loggedUser", $someUserHolder->getUserFromSession())
}
}
/**
* @Component()
*/
class ExampleCommand implements Command {
/**
* @Inject()
* @var SomeBean
*/
private $someBean;
public function getName() :string{
return "example:exampleCommandCommand";
}
public function execute(InputInterface $in, OutputInterface $out) : void {
$out->writeln("executing " . $this->getName());
//Example ....
$this->someBean->doSomething()
$out->writeObject($this->someBean->getSomething());
$out->writeln("finish!");
}
}
/**
* @Cache(name="cache", key="user {0}.id", time=10)
*/
public function getLeaderByCompany($company){
return $this->someDao->getByCompanyId($company->getId())
}
$profileName = "production";
$engine = new Engine("przemek_config",$profileName, __ROOT__ . "app");
@Configuration
@Profile(name="production")
class SomeProductionConfig(){
..
}
@Configuration
@Profile(name="development")
class SomeDevelopmentConfig(){
..
}
class NotFoundErrorHandler extends ExceptionResolver {
public function doResolveException($ex) {
if ($ex instanceof RouteNotFoundException || $ex instanceof EntityNotFoundException) {
ResponseHelper::setCode(HttpCode::$NOT_FOUND);
$viewModel = new ViewModel();
$viewModel->setViewName("/house/web/error/notFound");
return $viewModel;
}
return null;
}
public function getOrder() {
return 400;
}
}