Ir para conteúdo

Gabriel Jacinto

Members
  • Total de itens

    819
  • Registro em

  • Última visita

  • Dias vencidos

    8

Reputação

74 Bom

Sobre Gabriel Jacinto

  • Classificação
    GabrielJMJ
  • Data de Nascimento 02/04/1999

Informações Pessoais

  • Sexo
    Masculino
  • Localização
    Itajobi - SP
  • Interesses
    Aprender mais sobre esse mundo da programação.

Contato

  • Skype
    gabrieljmj91
  • Twitter
    @gabrieljmj
  • Github
  • Facebook
    https://www.facebook.com/gabriel.forca
  • Site Pessoal
    http://gabrieljmj.wordpress.com

Últimos Visitantes

3972 visualizações
  1. Gabriel Jacinto

    Rota x Url Amigável? (Laravel)

    Em MVC, digamos que a rota diz à sua aplicação que controller/action usar, mas não somente pela URL, mas de acordo com o tipo de requisição também (POST, DELETE, PUT, GET). Exemplo: $router->register( 'login', '/login', 'SecurityController:loginAction' ); $router->register( 'login_check', '/login', 'SecurityController:loginCheckAction', 'POST' ); Como você pode ver, você pode acessar a mesma URL e ter diferentes comportamentos de acordo com o tipo de requisição.
  2. Gabriel Jacinto

    silex micro framework

    O método Application::post define uma rota para requisições do tipo post. Ou seja, você só vai conseguir acessar por formulários, ou por requisições por cURL etc.
  3. Gabriel Jacinto

    Sobre Orientado a Objeto em PHP

    namespace Your\Namespace\Db\Connection; interface ConnectorInterface { /** * @return object */ public function getConnection(); } namespace Your\Namespace\Db\Connection; use Your\Namespace\Db\Connection\ConnectorInterface; use \PDO; class PDOConnector implements ConnectorInterface { /** * PDO instance * * @var \PDO */ private $pdo; /** * @param string $dsn * @param string $user * @param string $pass * @param integer $port */ public function __construct($dsn, $user, $pass, $port = null) { $this->pdo = new PDO($dsn, $user, $pass, $port); } /** * @return \PDO */ public function getConnection() { return $this->pdo; } } namespace Your\Namespace\Db\Storage; interface StorageInterface { /** * @param string $table * @param array|string $where */ public function remove($table, $where); /** * @param string $table * @param array $values */ public function create($table, array $values); /** * @param string $table * @param array $dataSet * @param string|array $where */ public function update($table, array $dataSet, $where); /** * @param string $table * @param string|array $data * @param string|array $where */ public function read($table, $data = '*', $where); } namespace Your\Namespace\Db\Storage; use Your\Namespace\Db\Connection\ConnectorInterface; use Your\Namespace\Db\Storage\StorageInterface; class Storage implements StorageInterface { /** * @param \Your\Namespace\Db\Connection\ConnectorInterface $connection */ public function __construct(ConnectorInterface $connection) { $this->db = $connection; } /** * @param string $table * @param array|string $where */ public function remove($table, $where) { //... } /** * @param string $table * @param array $values */ public function create($table, array $values) { //... } /** * @param string $table * @param array $dataSet * @param string|array $where */ public function update($table, array $dataSet, $where) { //... } /** * @param string $table * @param string|array $data * @param string|array $where */ public function read($table, $data = '*', $where) { //... } } namespace Your\Namespace\Controller; use Your\Namespace\Db\Storage\StorageInterface; class UserController { /** * @var \Your\Namespace\Db\Storage\StorageInterface; */ private $storage; /** * @param \Your\Namespace\Db\Storage\StorageInterface $storage */ public function __construct(StorageInterface $storage) { $this->storage = $storage; } /** * @param string $name * @param string $email * @param string $pass * @param ? $kPost * @param ? $k * @param string $ip */ public function singUp($name, $email, $pass, $kPost, $k, $ip) { //... } } Isso é só um exemplo do que você pode fazer.
  4. Gabriel Jacinto

    Classe para manipulação de URL Amigavel

    Procure por Router. Há vários exemplos, como o Aura.Router.
  5. Gabriel Jacinto

    Site com mais de um idioma

    Crie uma tabela no banco de dados ou um csv ou até mesmo um array com todas as strings usadas no site em diferentes idiomas. Depois é só selecionar as strings pelo idioma que o usuário escolher ou você detectar pelo IP.
  6. Gabriel Jacinto

    Melhores práticas MVC

    A única coisa que você pode usar relacionado a singleton/DB é Registry.
  7. Gabriel Jacinto

    Vale a pena? ultilizar frameworks ?

    Complementando o post #154 do Bruno Augusto: ele é user-friendly principalmente pelo console, com muito mais opções que o console do ZF2 (apesar de eu preferir escrever quase tudo na mão, só gerando os bundles). Você pode gerar bundles, cruds, rotas, listar rotas e muito mais. No do ZF2 você pode fazer isso, mas você teria que fazer toda a configuração pro console (pelo o que li).
  8. Gabriel Jacinto

    Trabalhando com POO

    "Mais memória do este padrão oculpa?" - ficou meio sem sentido isso :lol: Não sei se essa resposta é a que você espera, porque não entendi sua pergunta: Toda vez que usa-se um static method, é criada uma nova instancia da classe, ocupando o espaço na memória de um instancia toda (ou algo assim) e ele tem uma queda de performance. Nesse post eles até fazem uma comparaçãozinha do tempo de execução: Performance of static methods vs. functions (há também o teste com objetos). Meu argumento sobre não usar anterior pode estar errado, me baseei no que li uma vez, mas é fácil saber quando usar static methods e não é dessa maneira que o cache7b usou. Esse aqui é bom artigo sobre isso.
  9. Gabriel Jacinto

    Trabalhando com POO

    Você poderia criar uma classe como uma entidade e uma classe para as funções de armazenamento (Storage/DAO). <?php class Cliente{ //Setters and getters } <?php class ClientesDAO{ public function fetchOne( Cliente $cliente ){} /** * Get all clients * * @return array * @throws AnyException case something fail */ public function fetchAll(){ try{ $stmt = $this->pdo->prepare( sprintf( 'SELECT * FROM `%s`', $this->table ) ); $stmt->execute(); return $stmt->fetchAll(); }catch( \PDOException $e ){ throw new AnyException( $e->getMessage() ); } } //Other storage methods (create, remove, update, etc.) } E por favor, não há necessidade alguma de static methods, nesse caso só serve pra ocupar mais memória.
  10. Gabriel Jacinto

    PHP - Orientação a Objeto

    Sobre a conexão, estude alguns patterns que podem te ajudar, como o AbstractFactory. Do jeito que você está fazendo, quebra uma regra do princípio S.O.L.I.D.: OCP: Repare que se você quiser se conectar outro banco de dados, você vai ter que abrir a classe e editá-la.Quanto à nomenclatura, Riberry já disse sobre PSR 1 e 2. E outra coisa: estude sobre encapsulamento e visibilidade: function select($query, $bind) //PÃÃÃÃÃ - ERRADO E sim, não se usa mais o nome da classe em um método para informar que deve ser usado quando houver uma instância, e sim __construct.
  11. Gabriel Jacinto

    quando um titulo for grande de mais apareça aqueles 3 pontinhos ...

    $maxSize = 20; //tamanho máximo da string if( strlen( $string ) ){ $finalString = substr( $string, 0, $maxSize ) . '...'; }
  12. Gabriel Jacinto

    Problema com autoload

    Caraca, confundi com pattern uahsuah sim, é.
  13. Gabriel Jacinto

    Problema com autoload

    Estou criando um micro-framework, mas estou com um problema quanto ao autoload. Caso a pessoa tenha adquirido os arquivos do framework pelo Composer, ele (o Composer) faz o autoload das classes e uso as classes de autoload do framework pra criar um autoload dos arquivos da aplicação, porém essas classes tem namespaces, então, caso a pessoa não utilize via Composer, ele inclui esses arquivos (os de autoload do framework) e cria um para os arquivos do fw e arquivos da aplicação. Porém a instancia desses arquivos dá problema por causa das namespaces, porque dentro de alguns arquivos eu uso interfaces e eles necessitam do "use", porém se eu instanciar pelo require e não pelo autoload do Composer, ele reconhece o dobro: namespace Nam1\Nam2;use Nam1\Nam2\Interface;class Class implements Interface{}//Se eu instancio pelo Composer:$class = new Class(); //Tudo normal//Pelo require:$class = new Class(); //Erro://Return: Algum erro dizendo que a interface Nam1\Nam2\Nam1\Nam2\Interface não foi encontradaAcho que ficou meio confuso :unsure: mas se não entenderem tentarei explicar melhor.(Caraca, repeti demais algumas palavras :yay:).
  14. Gabriel Jacinto

    Multi DB

    Tenha uma tabela para registro de usuários e outras com as informações, dados adicionais ou seja lá o que for com chaves estrangeiras relacionadas com esses usuários. Ou eu não entendi o que você quer mesmo.
  15. Gabriel Jacinto

    Métodos do PHPUnit

    Apesar da maioria das vezes servir pra conexão com alguma base de dados, em outras você pode, por exemplo, atribuir valores à propriedades (variáveis) para serem usadas no teste todo, caso vários testes precisem. Na documentação há esses exemplos: "In practice, you only need to implementtearDown()if you have allocated external resources like files or sockets in setUp(). If your setUp() just creates plain PHP objects, you can generally ignore tearDown(). However, if you create many objects in your setUp(), you might want tounset() the variables pointing to those objects in your tearDown() so they can be garbage collected." - More setUp() than tearDown(). Tradução: "Na prática, você só precisa implementar tearDown() se você tem recursos alocados externamente, como arquivos ou sockets no setUp(). Se set setUp() só cria objetos planos do PHP, você pode, geralmente, ignorar o tearDown(). Entretanto, se você cria alguns objetos em seu setUp(), você pode querer fazer um unset() nas variáveis apontando para seus aqueles objetos no tearDown(), para que possam ser descartados".
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.