Hej, chce się przebranżowić jednak nie wiem jak powinno wyglądać dobre cv na stanowisko junior php developera.
W firmie gdzie chce złożyć cv wymagają znajomość obiektowego php i podstaw symfony, js, css.
Pomożecie?
zrobiłem dwie wersje jedna krótka a druga z opisem projektów(nie wiem czy tak się opisuję projekty jak ja to zrobiłem).
krytka jak najbardziej wskazana:)
przykładowe kody z mojej aplikacji, żeby nie było że jestem zielony:
kod prymitywny wiem, proszę o wyrozumiałość:)
klasa odpowidająca za request formularza:
<?php
namespace App\Requests;
use Entity\Apps;
use App\Validations\AddFolderValidator;
class AddFolderRequest
{
private $name;
private $subId;
private $visibility;
private $folderDescription;
private $appsEntity;
private $folderValidator;
public $feedback = [];
public $errors = [];
public function __construct($folderName, $subId, $visibility, $folderDescription)
{
$this->name = $folderName;
$this->visibility = $visibility;
$this->subId = $subId;
$this->folderDescription = $folderDescription;
$this->folderValidator = new AddFolderValidator($folderName);
$this->appsEntity = new Apps();
}
public function createFolder()
{
$this->folderValidator->checkNameExist();
$this->folderValidator->validFolderName($this->name);
$this->mergeErrors();
if (empty($this->errors)) {
$this->appsEntity->createApp($this->name);
$this->appsEntity->setSubId($this->name, $this->subId);
$this->appsEntity->setDescription($this->name, $this->folderDescription);
$this->appsEntity->setType($this->name, 'folder');
$this->appsEntity->setUrl($this->name, 'apps/');
$this->appsEntity->setDirIcon($this->name, 'folder-icon.png');
$this->appsEntity->setVisibility($this->name, $this->visibility);
$this->feedback[] = 'dodano nowy folder';
}
}
public function mergeErrors()
{
$this->errors = array_merge($this->errors, $this->folderValidator->getErrors());
}
}
serwis logowania:
<?php
namespace App\Services\Auth;
use Services\Auth\LoginValidationServices;
use App\Models\Session\UserSession;
use DateTime;
use Entity\Users;
use Symfony\Component\HttpFoundation\Session\Session;
use Interfaces\AlertsError;
class LoginServices implements AlertsError
{
private $login;
private $password;
private $validatorServices;
private $session;
private $dateTime;
private $userEntity;
/**
* All errors after validation, taken from ValidationService
* @var array
*/
private $errors = [];
public function __construct($login, $password)
{
$this->login = $login;
$this->password = $password;
$this->dateTime = new DateTime();
$this->userEntity = new Users();
$this->session = new UserSession();
$this->validatorServices = new LoginValidationServices($this->login, $this->password);
$this->authUser();
}
/**
* All errors after validation login and password
* @return array
*/
public function getErrors()
{
return $this->errors;
}
/**
* Check errors after validation and set authorization status for User
* #
* If after validation we don't have errors in array $errors, set authorization for User
* Any error in array "$errors" set failed authorization
* @return bool
*/
private function authUser()
{
$this->mergeValidationServicesErrors();
//auth user
if (empty($this->errors)) {
$this->setLoginDate();
$this->setLoginIp();
$this->session->setAuthStatus(true);
} else {
$this->session->setAuthStatus(false);
}
if (empty($this->errors)) {
$this->loginSuccessful();
}
}
private function mergeValidationServicesErrors()
{
$this->errors = array_merge($this->errors, $this->validatorServices->getErrorsAfterValidation());
//$this->errors = array_merge($this->errors, $this->blockingServices->errors);
}
private function setLoginDate()
{
$loginTime = $this->dateTime->format('Y-m-d H:i:s');
$this->userEntity->setLoginDate($this->login, $loginTime);
}
private function setLoginIp()
{
$userIp = $_SERVER['REMOTE_ADDR'];
$this->userEntity->setLoginIp($this->login, $userIp);
}
public function loginSuccessful()
{
$session = new Session();
$session->set('userLogin', $this->login);
header("Location: " . APP_URL . "home");
}
}
przykładowa walidacja:
<?php
namespace App\Validations;
use Entity\Apps;
class AppValidator
{
private $minCountName = 4;
private $maxCountName = 20;
public $appsEntity;
public $errors = [];
public function __construct()
{
$this->appsEntity = new Apps();
}
public function validApp($name)
{
if ($name == '') {
$this->errors[] = 'Nie podałeś nazwy';
}
if (mb_strlen($name) < $this->minCountName) {
$this->errors[] = 'Nazwa powinien składać się przynajmniej z ' . $this->minCountName . ' znaków';
}
if (mb_strlen($name) > $this->maxCountName) {
$this->errors[] = 'Nazwa powinien składać się maksymalnie z ' . $this->maxCountName . ' znaków';
}
}
public function checkAppExist($name)
{
if ($this->appsEntity->findApp($name) !== false) {
$this->errors[] = 'Nazwa jest zajęta';
}
}
public function appNotExist($name)
{
if ($this->appsEntity->findApp($name) == false) {
$this->errors[] = 'Nie ma takiej aplikacji lub już nie istnieje';
}
}
}
Proszę serdecznie o pomoc