Professional Documents
Culture Documents
PHP - Programando Com Orientação A Objetos
PHP - Programando Com Orientação A Objetos
FULL STACK
{
"name": “UpInside/fsphp",
"description": "Formação FS PHP",
"minimum-stability": "dev",
"authors": [
{
"name": "Robson V. Leite",
PHP standard
"email": "cursos@upinside.com.br"
<?=
"homepage": "https://upinside.com.br",
"role": "Developer"
}
recomendation
],
"config": {
;?> },
"vendor-lib": "vendor"
"autoload": {
"psr-4": {
"Source\\": "source/"
}
}
}
Robson V. Leite
CEO UpInside Treinamentos
cursos@upinside.com.br
www.upinside.com.br www.upinside.com.br
DEFINE("CLASSNAME", "PHP standard recomendation");
FULL STACK
O que deve ser considerado como codificação padrão para garantir um alto nível de
"name": “UpInside/fsphp",
"description": "Formação FS PHP",
"minimum-stability": "dev",
"authors": [
{
interoperabilidade técnica entre códigos compartilhados.
"name": "Robson V. Leite",
"email": "cursos@upinside.com.br"
"homepage": "https://upinside.com.br",
file.php
<?php
echo "Olá mundo!";
?> <?php
Robson V. Leite <h1><?= "Olá mundo!"; ?></h1> require "config.php"; /Arquivo com constantes
CEO UpInside Treinamentos require "functions.php"; //Arquivo de funções
cursos@upinside.com.br
www.upinside.com.br echo HELLO;
useMyFunction();
/Codificação de caracteres:
DEFINE("HELLO", "Olá mundo!");
Arquivos devem usar apenas UTF-8 sem BOM
para código PHP. (IDE, Charset, Etc.) mySecondeFunction()
{
<?= "page X"; ?>
//Function Body
}
DEFINE("CLASSNAME", "PHP standard recomendation");
FULL STACK
}
"role": "Developer"
arquivo e ter pelo menos um nível de
],
"config": {
namespace (padrão PSR-4). O nome da <?php
},
"vendor-lib": "vendor"
classe deve ser declarada em StudlyCaps.
"autoload": { namespace Source;
"psr-4": {
}
"Source\\": "source/"
/Constantes da classe devem ser class MyClass
}
declaradas em maiúscula e quando preciso {
}
const COURSE = "FSPHP";
podem ser separadas por under_score. Const CLASS_NAME = "PSR-1";
FULL STACK
FULL STACK
FULL STACK
}
"role": "Developer"
declarar todas as interfaces em uma visibilidade (public, protected,
],
"config": {
linha ou declarar uma por linha. private) e nunca deve usar em sua
},
"vendor-lib": "vendor"
declaração a palavra-chave var.
"autoload": {
IDE Em uma por linha, cada linha subsequente
"psr-4": {
"Source\\": "source/"
deve ser recuada uma vez e o primeiro item Não deve haver mais de uma propriedade
} deve estar na próxima linha e deve haver declarada por linha e nunca use underscore_
}
} apenas uma interface por linha. ou _underscore para declarar visibilidade
protegida ou privada.
MyClass.php
MyClass.php
<?php
<?php
Robson V. Leite
namespace Source\Controller;
CEO UpInside Treinamentos namespace Source\Controller;
cursos@upinside.com.br use Source\Parent\iClass
www.upinside.com.br
class Course
class MyClass implements {
iClass, //var $courseName;
\ArrayAccess, //private $courseName_;
\Countable public $courseName;
{ protected $courseAuthor = "Robson V. Leite";
<?= "page X"; ?> //Class Body private $coursePrice;
} }
DEFINE("CLASSNAME", "PHP standard recomendation");
FULL STACK
}
"role": "Developer"
ter sua visibilidade declarada e não
namespace Source\Controller;
],
"config": {
usar underscore_ ou _underscore.
"vendor-lib": "vendor" class Course
},
{
"autoload": {
"psr-4": {
Nomes de métodos não podem conter espaços private $courseName;
"Source\\": "source/" nele ou após ele. A chave de abertura deve private $courseAuthor;
}
} estar na sua própria linha, a de fechamento private $coursePrice;
}
na próxima linha após o corpo e devem ser
public function setName($name)
declarados com $camelCase(). {
$this->courseName = $name;
}
/Argumentos do método: Na lista de
argumentos deve haver um espaço depois da public function setMore($course, $price = "997")
vírgula mas não antes, argumentos com {
Robson V. Leite valores padrão devem ir ao final da lista. //Method Body
}
CEO UpInside Treinamentos
cursos@upinside.com.br
www.upinside.com.br A lista de argumentos também podem ser public function setAll(
declaradas na próxima linha. Quando $course,
$author,
isso ocorrer cada argumento assim como
$price = "997"
os parênteses devem estar em uma linha )
IDE subsequente e você deve adicionar um {
recuo para todos. //Method Body
<?= "page X"; ?> }
}
DEFINE("CLASSNAME", "PHP standard recomendation");
FULL STACK
FULL STACK
FULL STACK
}
"role": "Developer"
depois de function e um espaço antes e <?php
],
"config": {
depois de use.
"vendor-lib": "vendor" $myClosure = function($argA, $argB) {
}, //Closure Body
"autoload": {
"psr-4": { A chave de abertura DEVE ir na mesma };
}
"Source\\": "source/"
linha do nome, a chave de fechamento $myClosureB = function($argA) use ($varA) {
}
}
DEVE ir uma linha após o corpo. //Closure B Body
};
FULL STACK
}
"role": "Developer"
/Especificação:
],
"config": {
"vendor-lib": "vendor"
Entenda classes como todas as classes, interfaces e traits.
},
"autoload": {
"psr-4": { 1) Um nome de classe totalmente qualificado deve seguir 3) Ao carregar um arquivo que corresponde
o seguinte formato:
"Source\\": "source/"
} a um namespace:
}
}
\<VendorNamespace>(\<SubNamespace>)*\<ClassName> 1) O Vendor namespace e alguns dos
primeiros níveis de sub-namespace
1) O namespace completo DEVE ter um nome de nível DEVEM corresponder a um diretório
superior (Vendor). base.
FULL STACK
Um exemplo de autoload:
{
"name": “UpInside/fsphp",
"description": "Formação FS PHP",
"minimum-stability": "dev", autoload.php
"authors": [
{
"name": "Robson V. Leite",
"email": "cursos@upinside.com.br"
"homepage": "https://upinside.com.br", <?php
"role": "Developer"
}
],
"config": { autoload_register(function ($class) {
"vendor-lib": "vendor"
},
"autoload": { //Define o Vendor Namespace e a pasta raiz.
"psr-4": {
"Source\\": "source/" $prefix = 'Source\\';;
}
} $baseDir = __DIR__ . '/source/';
}
FULL STACK
Uma forma mais prática, inteligente e interoperável de criar seu autoload usando o
"name": “UpInside/fsphp",
"description": "Formação FS PHP",
"minimum-stability": "dev",
"authors": [ Composer para gerenciar todas as dependências do projeto:
{
"name": "Robson V. Leite",
"email": "cursos@upinside.com.br"