Process flow (4/5 All 5 patterns) | Account information management and LoginProcess flow Submenu
2017-11-25 release
2021-03-09 update
- SeeCheckpoint | Object-Orientation← point
- Transition to Login http://mini-blog.localhost/'status', 'index'
- Seescreen SeeTest Data
- Not Login
- index.php1require'../bootstrap.php'set autoloadit is omitted belowSeeAccount registration screen (User registration screen)
- index.php1require'../MiniBlogApplication.php'it is omitted below
- index.php1newMiniBlogApplication$app = new MiniBlogApplication(false)it is omitted below
- index.php1run$app->run()
- Application (core)2run
- Exception starttry {
- fetchAllFollowingsByUserIdparams = $this->router->resolve($this->request->getPathInfo())details↓
- Request (core)3getPathInfo''SeeCheckpoint | Request
- Request (core)4getBaseUrl
- Request (core)5getRequestUri
- Request (core)4getRequestUri
- Router (core)3resolve'status', 'index'$params['controller'], $params['action']SeeCheckpoint | Router← point
- Application (core)3runAction'status', 'index'
- Application (core)4findController!class_exists'StatusController'
- ClassLoader (core)5loadClass'StatusController'require'StatusController.php'/core /models
- Application (core)5getControllerDir
- MiniBlogApplication6getRootDir
- Application (core)5require_once'StatusController.php'/controllersSeeCheckpoint | Application
- class StatusController extends Controller
- ClassLoader (core)6loadClass'Controller'
- ClassLoader (core)7require'Controller.php'
- return new $controller_class($this)new use variabledetails↓
- Application (core)5new$controller_class = 'StatusController'MiniBlogApplication
- Controller (core)6__constructMiniBlogApplicationSeeCheckpoint | Controller
- Application (core)7getRequest
- Application (core)7getResponse
- Application (core)7getSession
- Application (core)7getDbManager
- $content = $controller->run($action, $params)details↓
- Controller (core)4run(StatusController)'status', 'index''indexAction'
- needsAuthentication($action) && isAuthenticated()denyLogindetails↓
- $auth_actions = array('index', 'post') (StatusController.php line 10)
- Exception throwthrow
- Controller (core)5needsAuthentication'index'trueLogin Necessary
- Session (core)5isAuthenticated
- Session (core)6get'_authenticated'falseNot Login Deny true
- throw new5UnauthorizedActionException
- ClassLoader (core)6loadClass'UnauthorizedActionException'
- ClassLoader (core)7require'UnauthorizedActionException.php'
- Exception catch} catch (UnauthorizedActionException $e) {(Application.php line 187)
- $login_action = array('account', 'signin')(MiniBlogApplication.php line 10)
- list($controller, $action) = $this->login_action
- Login screen http://mini-blog.localhost/account/signinNot Login, link Login
- Application (core)3runAction'account', 'signin'
- Application (core)4findController!class_exists'AccountController'
- ClassLoader (core)5loadClass'AccountController'require'AccountController.php'/core /models
- Application (core)5getControllerDir
- MiniBlogApplication6getRootDir
- Application (core)5require_once'AccountController.php'/controllersSeeCheckpoint | Application
- return new $controller_class($this)new use variabledetails↓
- Application (core)5new$controller_class = 'AccountController'MiniBlogApplication
- Controller (core)6__constructMiniBlogApplicationSeeCheckpoint | Controller
- Application (core)7getRequest
- Application (core)7getResponse
- Application (core)7getSession
- Application (core)7getDbManager
- $content = $controller->run($action, $params)details↓
- Controller (core)4run(AccountController)'account', 'signin''signinAction'
- needsAuthentication($action) && isAuthenticated()denyNot Logindetails↓
- $auth_actions = array('index', 'signout', 'follow') (AccountController.php line 10)
- Controller (core)5needsAuthentication'signin'falseLogin UnnecessaryisAuthenticated Untreated (Not check)
- Process start --- before Action start↘Process flow is almost the same except Controller and Actiononly Transition to Login, add Exception
- $content = $this->$action_method($params) variable functions$content = AccountController->signinAction()
- AccountController5signinActionAction start
- Session (core)6isAuthenticated
- Session (core)7get'_authenticated'falseNot Logintrue Login redirect('/account')
- return $this->render(array(... $this->generateCsrfToken ...)details↓
- Controller (core)6generateCsrfToken'account/signin''_token'Login http://mini-blog.localhost/account/authenticate checkCsrfTokenSeeCheckpoint | Controller
- Session (core)7get'csrf_tokens/account/signin'SeeCheckpoint | Session
- Session (core)7set'csrf_tokens/account/signin'
- Controller (core)6render$layout = 'layout'$variables['user_name'], $variables['password'], $variables['_token']
- Request (core)7getBaseUrl
- Request (core)8getRequestUri
- Controller (core)7newView
- ClassLoader (core)8loadClass'View'
- ClassLoader (core)9requireView.php'
- Application (core)8getViewDir
- MiniBlogApplication9getRootDir
- View (core)8__construct$base_dir, $defaults
- View (core)7renderaccount/signin$_layout = 'layout'execution1SeeCheckpoint | View (HTML structure)← point
- extract(array_merge($this->defaults, $_variables))View->defaults['base_url']$_variables['_token']$_variables['user_name']$_variables['password']
- View (core)8require'/views/account/signin.php'$base_url, $_token, $user_name, $password
- View (core)9setLayoutVar'title', 'Login'
- View (core)9'_token'hidden
- View (core)9escape
- View (signin.php)9renderaccount/inputs$_layout = falseexecution2render in signin.php
- extract(array_merge($this->defaults, $_variables))$_variables['user_name']$_variables['password']
- View (core)10require'/views/account/inputs.php'$user_name, $password
- View (core)11escape
- $content = ob_get_clean()output1inputs.php
- View (signin.php)9renderreturn $contentoutput1
- $content = ob_get_clean()output2signin.php + inputs.php
- if ($_layout) {$_layout = 'layout'
- $content = $this->render($_layout, array_merge($this->layout_variables, array('_content' => $content,)))
- View (core)8renderlayout$_layout = falseexecution3render in render
- extract(array_merge($this->defaults, $_variables))$_variables['title']View->defaults['base_url']View->defaults['session']$_variables['_content']
- View (core)9require'/views/layout.php'$title, $base_url, $session, $_content
- View (core)10escape
- Session (core)10isAuthenticated
- Session (core)11get'_authenticated'false
- layout10echo $_contentsignin.php + inputs.phpoutput2
- $content = ob_get_clean()output3layout.php + signin.php + inputs.php
- View (core)8renderreturn $contentoutput3
- }
- View (core)7renderreturn $contentoutput3
- Controller (core)6renderreturn View->render(...)
- AccountController5signinActionreturn AccountController->render(...)Action end
- Controller (core)4runreturn $content
- Response (core)4setContentResponse->content = $content
- Application (core)3runAction
- Exception end}
- Response (core)3sendecho Response->content
- Application (core)2run
- DbManager (core)2__destruct
- Login http://mini-blog.localhost/account/authenticateLogin button
- Seescreen SeeTest Data
- Login User ID: user1, Password: password
- index.php1require'../bootstrap.php'set autoloadit is omitted belowSeeAccount registration screen (User registration screen)
- index.php1require'../MiniBlogApplication.php'it is omitted below
- index.php1newMiniBlogApplication$app = new MiniBlogApplication(false)it is omitted below
- index.php1run$app->run()
- Application (core)2run
- $params = $this->router->resolve($this->request->getPathInfo())details↓
- Request (core)3getPathInfo'/account/authenticate'SeeCheckpoint | Request
- Request (core)4getBaseUrl
- Request (core)5getRequestUri
- Request (core)4getRequestUri
- Router (core)3resolve'account', 'authenticate'$params['controller'], $params['action']SeeCheckpoint | Router← point
- Application (core)3runAction'account', 'authenticate'
- Application (core)4findController!class_exists'AccountController'
- ClassLoader (core)5loadClass'AccountController'require'AccountController.php'/core /models
- Application (core)5getControllerDir
- MiniBlogApplication6getRootDir
- Application (core)5require_once'AccountController.php'/controllersSeeCheckpoint | Application
- class AccountController extends Controller
- ClassLoader (core)6loadClass'Controller'
- ClassLoader (core)7require'Controller.php'
- return new $controller_class($this)new use variabledetails↓
- Application (core)5new$controller_class = 'AccountController'MiniBlogApplication
- Controller (core)6__constructMiniBlogApplicationSeeCheckpoint | Controller
- Application (core)7getRequest
- Application (core)7getResponse
- Application (core)7getSession
- Application (core)7getDbManager
- $content = $controller->run($action, $params)details↓
- Controller (core)4run(AccountController)'account', 'authenticate''authenticateAction'
- needsAuthentication($action) && isAuthenticated()denyNot Logindetails↓
- $auth_actions = array('index', 'signout', 'follow') (AccountController.php line 10)
- Controller (core)5needsAuthentication'authenticate'falseLogin UnnecessaryisAuthenticated Untreated (Not check)
- Process start --- before Action start↘Process flow is almost the same except Controller and Actiononly Transition to Login, add Exception
- $content = $this->$action_method($params) variable functions$content = AccountController->authenticateAction()
- AccountController5authenticateActionAction start
- Sessiont6isAuthenticated
- Session (core)7get'_authenticated'falseNot Logintrue Login redirect('/account')
- Request (core)6isPosttruePOSTfalse Not POST forward404()
- Request (core)6getPost'_token'Transition to Login http://mini-blog.localhost/ generateCsrfTokenSeeCheckpoint | Request
- Controller (core)6checkCsrfToken'account/signin'trueTokenfalse None Token redirect('/account/signin')SeeCheckpoint | Controller
- Session (core)7get'csrf_tokens/account/signin'SeeCheckpoint | Session
- Session (core)7set'csrf_tokens/account/signin'
- Request (core)6getPost'user1'$user_name
- Request (core)6getPost'password'$password
- No error startif (count($errors) === 0)
- $this->db_manager->get('User')details↓
- DbManager (core)6get'User'get('User') 1stUserRepository
- DbManager (core)7getConnectionForRepository'User'DbManager->repository_connection_map['User']
- DbManager (core)8getConnection
- DbManager (core)8getConnectionreturn current(DbManager->connections)DbManager->connections['master'] = $con↙
- DbManager (core)7getConnectionForRepositoryreturn $con
- $repository = new $repository_class($con)new use variabledetails↓
- DbManager (core)7new$repository_class = 'UserRepository'$con
- ClassLoader (core)8loadClass'UserRepository'
- ClassLoader (core)9require'UserRepository.php'
- class UserRepository extends DbRepository
- ClassLoader (core)10loadClass'DbRepository'
- ClassLoader (core)11require'DbRepository.php'
- DbRepository (core)8__construct'$con'
- DbRepository (core)9setConnectionUserRepository->con = $con↗
- DbManager (core)6getDbManager->repositories['User']=>UserRepository
- DbManager (core)6getreturn DbManager->repositories['User']
- UserRepository6fetchByUserName'user1'$user'user1' 1recordSeeSQL
- DbRepository (core)7fetchSeeCheckpoint | DbRepository
- DbRepository (core)8execute
- UserRepository6fetchByUserName
- UserRepository6hashPassword'password'
- Session (core)6setAuthenticatedtrue
- Session (core)7set'_authenticated'trueLogin
- Session (core)7regeneratetrueSession Fixation protection (change Login status)
- Session (core)7regeneratesession_regenerate_id (true)New Session ID issued$sessionIdRegenerated trueSeeCheckpoint | Session
- Session (core)6set'user'$user'user1' 1 record (Login user)
- Controller (core)6redirect'/'
- Request (core)7isSslfalse
- Request (core)7getHost
- Request (core)7getBaseUrl
- Request (core)8getRequestUri
- $urlhttp://mini-blog.localhost/
- Response (core)7setStatusCode
- Response (core)7setHttpHeader
- Controller (core)6redirect
- No error endError is omitted
- AccountController5authenticateActionreturn AccountController->...Action end
- Controller (core)4runreturn $contentNo error $content: null
- Response (core)4setContentResponse->content = $content
- Application (core)3runAction
- Response (core)3sendecho Response->content
- Application (core)2run
- DbManager (core)2__destruct
- Account information http://mini-blog.localhost/accountlink Account
- Seescreen SeeTest Data
- Login User ID: user1, Password: password
- index.php1require'../bootstrap.php'set autoloadit is omitted belowSeeAccount registration screen (User registration screen)
- index.php1require'../MiniBlogApplication.php'it is omitted below
- index.php1newMiniBlogApplication$app = new MiniBlogApplication(false)it is omitted below
- index.php1run$app->run()
- Application (core)2run
- $params = $this->router->resolve($this->request->getPathInfo())details↓
- Request (core)3getPathInfo'/account'SeeCheckpoint | Request
- Request (core)4getBaseUrl
- Request (core)5getRequestUri
- Request (core)4getRequestUri
- Router (core)3resolve'account', 'index'$params['controller'], $params['action']SeeCheckpoint | Router← point
- Application (core)3runAction'account', 'index'
- Application (core)4findController!class_exists'AccountController'
- ClassLoader (core)5loadClass'AccountController'require'AccountController.php'/core /models
- Application (core)5getControllerDir
- MiniBlogApplication6getRootDir
- Application (core)5require_once'AccountController.php'/controllersSeeCheckpoint | Application
- class AccountController extends Controller
- ClassLoader (core)6loadClass'Controller'
- ClassLoader (core)7require'Controller.php'
- return new $controller_class($this)new use variabledetails↓
- Application (core)5new$controller_class = 'AccountController'MiniBlogApplication
- Controller (core)6__constructMiniBlogApplicationSeeCheckpoint | Controller
- Application (core)7getRequest
- Application (core)7getResponse
- Application (core)7getSession
- Application (core)7getDbManager
- $content = $controller->run($action, $params)details↓
- Controller (core)4run(AccountController)'account', 'index''indexAction'
- needsAuthentication($action) && isAuthenticated()denyNot Logindetails↓
- $auth_actions = array('index', 'signout', 'follow') (AccountController.php line 10)
- Controller (core)5needsAuthenticationindextrueLogin Necessary
- Session (core)5isAuthenticated
- Session (core)6get'_authenticated'trueLogin Deny false
- Process start --- before Action start↘Process flow is almost the same except Controller and Actiononly Transition to Login, add Exception
- $content = $this->$action_method($params) variable functions$content = AccountController->indexAction()
- AccountController5indexActionAction start
- Session (core)6get'user1' 1 record (Login user)$user
- $followings = $this->db_manager->get('User')->fetchAllFollowingsByUserId($user['id'])Follow 'user2'details↓
- DbManager (core)6get'User'get('User') 1stUserRepository
- DbManager (core)7getConnectionForRepository'User'DbManager->repository_connection_map['User']
- DbManager (core)8getConnection
- DbManager (core)8getConnectionreturn current(DbManager->connections)DbManager->connections['master'] = $con↙
- DbManager (core)7getConnectionForRepositoryreturn $con
- $repository = new $repository_class($con)new use variabledetails↓
- DbManager (core)7new$repository_class = 'UserRepository'$con
- ClassLoader (core)8loadClass'UserRepository'
- ClassLoader (core)9require'UserRepository.php'
- class UserRepository extends DbRepository
- ClassLoader (core)10loadClass'DbRepository'
- ClassLoader (core)11require'DbRepository.php'
- DbRepository (core)8__construct'$con'
- DbRepository (core)9setConnectionUserRepository->con = $con↗
- DbManager (core)6getDbManager->repositories['User']=>UserRepository
- DbManager (core)6getreturn DbManager->repositories['User']
- UserRepository6fetchAllFollowingsByUserId$user_idSeeSQL
- DbRepository (core)7fetchAllSeeCheckpoint | DbRepository
- DbRepository (core)8execute
- User Repository6fetchAllFollowingsByUserId
- Controller (core)6render$layout = 'layout'$variables['user'] 'user1'$variables['followings'] 'user2'
- Request (core)7getBaseUrl
- Request (core)8getRequestUri
- Controller (core)7newView
- ClassLoader (core)8loadClass'View'
- ClassLoader (core)9requireView.php'
- Application (core)8getViewDir
- MiniBlogApplication9getRootDir
- View (core)8__construct$base_dir, $defaults
- View (core)7renderaccount/index$_layout = 'layout'$_variables['user'] 'user1'$_variables['followings'] 'user2'execution1SeeCheckpoint | View (HTML structure)← point
- extract(array_merge($this->defaults, $_variables))View->defaults['base_url']$_variables['user']$_variables['followings']
- View (core)8require'/views/account/index.php'$base_url, $user, $followings
- View (core)9setLayoutVar'title', 'Account'
- View (core)9escape
- foreach['followings'] 'user2'
- $content = ob_get_clean()output1index.php
- if ($_layout) {$_layout = 'layout'
- $content = $this->render($_layout, array_merge($this->layout_variables, array('_content' => $content,)))
- View (core)8renderlayout$_layout = falseexecution2render in render
- extract(array_merge($this->defaults, $_variables))$_variables['title']View->defaults['base_url']View->defaults['session']$_variables['_content']
- View (core)9require'/views/layout.php'$title, $base_url, $session, $_content
- View (core)10escape
- Session (core)10isAuthenticated
- Session (core)11get'_authenticated'true
- layout10echo $_contentindex.php
- $content = ob_get_clean()output2layout.php + index.php
- View (core)8renderreturn $contentoutput2
- }
- View (core)7renderreturn $contentoutput2
- Controller (core)6renderreturn View->render(...)
- AccountController5indexActionreturn AccountController->render(...)Action end
- Controller (core)4runreturn $content
- Response (core)4setContentResponse->content = $content
- Application (core)3runAction
- Response (core)3sendecho Response->content
- Application (core)2run
- DbManager (core)2__destruct
- Logout http://mini-blog.localhost/account/signoutlink Logout
- Seescreen SeeTest Data
- Login User ID: user1, Password: password
- index.php1require'../bootstrap.php'set autoloadit is omitted belowSeeAccount registration screen (User registration screen)
- index.php1require'../MiniBlogApplication.php'it is omitted below
- index.php1newMiniBlogApplication$app = new MiniBlogApplication(false)it is omitted below
- index.php1run$app->run()
- Application (core)2run
- $params = $this->router->resolve($this->request->getPathInfo())details↓
- Request (core)3getPathInfo'/account/signout'SeeCheckpoint | Request
- Request (core)4getBaseUrl
- Request (core)5getRequestUri
- Request (core)4getRequestUri
- Router (core)3resolve'account', 'signout'$params['controller'], $params['action']SeeCheckpoint | Router← point
- Application (core)3runAction'account', 'signout'
- Application (core)4findController!class_exists'AccountController'
- ClassLoader (core)5loadClass'AccountController'require'AccountController.php'/core /models
- Application (core)5getControllerDir
- MiniBlogApplication6getRootDir
- Application (core)5require_once'AccountController.php'/controllersSeeCheckpoint | Application
- class AccountController extends Controller
- ClassLoader (core)6loadClass'Controller'
- ClassLoader (core)7require'Controller.php'
- return new $controller_class($this)new use variabledetails↓
- Application (core)5new$controller_class = 'AccountController'MiniBlogApplication
- Controller (core)6__constructMiniBlogApplicationSeeCheckpoint | Controller
- Application (core)7getRequest
- Application (core)7getResponse
- Application (core)7getSession
- Application (core)7getDbManager
- $content = $controller->run($action, $params)details↓
- Controller (core)4run(AccountController)'account', 'signout''signoutAction'
- needsAuthentication($action) && isAuthenticated()denyNot Logindetails↓
- $auth_actions = array('index', 'signout', 'follow') (AccountController.php line 10)
- Controller (core)5needsAuthentication'signout'trueLogin Necessary
- Session (core)5isAuthenticated
- Session (core)6get'_authenticated'trueLogin Deny false
- Process start --- before Action start↘Process flow is almost the same except Controller and Actiononly Transition to Login, add Exception
- $content = $this->$action_method($params) variable functions$content = AccountController->signoutAction()
- AccountController5signoutActionAction start
- Session (core)6clear$_SESSION = array()
- Session (core)6setAuthenticatedfalse
- Session (core)7set'_authenticated'falseNot Login
- Session (core)7regeneratetrueSession Fixation protection (change Login status)
- Session (core)7regeneratesession_regenerate_id (true)New Session ID issued$sessionIdRegenerated trueSeeCheckpoint | Session
- Controller (core)6redirect'/account/signin'
- Request (core)7isSslfalse
- Request (core)7getHost
- Request (core)7getBaseUrl
- Request (core)8getRequestUri
- $urlhttp://mini-blog.localhost/account/signin
- Response (core)7setStatusCode
- Response (core)7setHttpHeader
- Controller (core)6redirect
- AccountController5signoutActionreturn AccountController->redirect('/account/signin')Action end
- Controller (core)4runreturn $content
- Response (core)4setContentResponse->content = $content
- Application (core)3runAction
- Response (core)3sendecho Response->content
- Application (core)2run
- DbManager (core)2__destruct
note showing $this
e.g. $this->request → MiniBlogApplication->request
SQL
check SQL (phpMyAdmin, select SQL TAB) http://localhost/phpmyadmin/db_sql.php?db=mini_blog
fetchByUserName
SELECT * FROM user WHERE user_name = '
user1'
id | user_name | password | created_at |
---|---|---|---|
1 | user1 | ee5281d035bd1bd7786301be4274a68b006ae916 | 2017-11-01 00:00:00 |
fetchAllFollowingsByUserId
SELECT u.* FROM user u LEFT JOIN following f ON f.following_id = u.id WHERE f.user_id =
1
id | user_name | password | created_at |
---|---|---|---|
2 | user2 | ee5281d035bd1bd7786301be4274a68b006ae916 | 2017-11-01 00:00:00 |
(reference) LEFT JOIN following f ON f.following_id = u.id
SELECT u.*, f.*
FROM user u
LEFT JOIN following f ON f.following_id = u.id
ORDER BY u.id
u.id | u.user_name | u.password | u.created_at | f.user_id | f.following_id |
---|---|---|---|---|---|
1 | user1 | ee5281d035bd1bd7786301be4274a68b006ae916 | 2017-11-01 00:00:00 | NULL | NULL |
2 | user2 | ee5281d035bd1bd7786301be4274a68b006ae916 | 2017-11-01 00:00:00 | 1 | 2 |
3 | user3 | ee5281d035bd1bd7786301be4274a68b006ae916 | 2017-11-01 00:00:00 | NULL | NULL |
Mini Blog Application
Login screen
Creation procedure |
class | |
---|---|---|
Database | ||
Routing | MiniBlogApplication | '/account/:action' => array('controller' => 'account') |
Controller | AccountController | signinAction |
View file | account/signin.php account/inputs.php (in account/signin.php) |
function | class | method |
---|---|---|
Check | Session | isAuthenticated() Login status check |
Data set | Controller | generateCsrfToken('account/signin') renderargument |
Data get | ||
Data output | ||
Screen | Controller | redirect('/account') Account information (Logined error) |
Controller | render(...) Login screen (not Login) |
Login
Creation procedure |
class | |
---|---|---|
Database | UserRepository | fetchByUserName hashPassword |
Routing | MiniBlogApplication | '/account/:action' => array('controller' => 'account') |
Controller | AccountController | authenticateAction |
View file |
function | class | method |
---|---|---|
Check | Session | isAuthenticated() Login status check (start, not Login) |
Request | isPost POST check | |
Controller | checkCsrfToken('account/signin', $token) Token check | |
- | Validation (error count) | |
- | if (!$user No user (in Validation) | |
- | ($user['password'] !== $user_repository->hashPassword($password) password check (in Validation) |
|
Data set | Session | setAuthenticated(true) Logined (Login) |
Session | set('user', $user) Login user ('user1' 1record) (Login) | |
Controller | generateCsrfToken('account/signin') renderargument (Validation error) | |
Data get | Request |
getPost('_token') 'ed38d8176bff02c2b0364055da5e8cb4d72fc85d' getPost('user_name') 'user1' getPost('password') 'password' |
DbManager | get('User') UserRepository | |
UserRepository | fetchByUserName($user_name) 'user1' 1record | |
UserRepository | hashPassword($password) 'password' | |
Data output | ||
Screen | Controller |
redirect('/account') Account information (Logined error) redirect('/account/signin') Login screen (Token error) redirect('/') Homepage (after Login, 'user1' Home) |
Controller | forward404() 404 error screen (POST error) | |
Controller | render(...) again Login screen (Validation error) |
Account information
Creation procedure |
class | |
---|---|---|
Database | UserRepository | fetchAllFollowingsByUserId |
Routing | MiniBlogApplication | '/account' => array('controller' => 'account', 'action' => 'index') |
Controller | AccountController | indexAction |
View file | account/index.php |
function | class | method |
---|---|---|
Check | ||
Data set | ||
Data get | Session | get('User') Login user ('user1' 1record) |
DbManager | get('User') UserRepository | |
UserRepository | fetchAllFollowingsByUserId($user['id']) Follow 'user2' | |
Data output | ||
Screen | Controller | render(...) Account information |
Logout
Creation procedure |
class | |
---|---|---|
Database | ||
Routing | MiniBlogApplication | '/account/:action' => array('controller' => 'account') |
Controller | AccountController | signoutAction |
View file |
function | class | method |
---|---|---|
Check | ||
Data set | Session | clear() $_SESSION = array() |
Session | setAuthenticated(false) not Login | |
Data get | ||
Data output | ||
Screen | Controller | redirect('/account/signin') Login screen |
Login User ID: user1, Password: password.