Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ar0n

Esclarecimentos de PHP

Recommended Posts

Bem gente comecei a programar em PHP a algum tempo, entretanto tenho acumulado algumas pequenas dúvidas.

 

1- Functions sem return?

 

Pelo que pude notar o PHP não trabalha com procedures, pelo menos "procedure" não é uma palavra chave e eu não achei algo falando a respeito disso, entretanto é possível criar functions sem returns no PHP o que seria a mesma coisa de uma procedure. Então é isso mesmo a única forma de criar uma procedure no PHP é fazer uma function sem return? Se isso for verdade alguém saberia me explicar o por que dele a palavra chave procedure não ter sido implementada na linguagem?

 

2-Palavras que começam e terminam com "__palavra__"

 

Já notei que em alguns tutoriais ou vídeo aulas são usados comandos que começam ou terminam com dois "underlines" e gostaria de saber quais são as características desse tipo de palavras chaves, segui a baixo a lista com todas as palavras chaves que implementam essa particularidade.

 

 

__CLASS__

__DIR__

__FILE__

__FUNCTION__

__LINE__

__METHOD__

__NAMESPACE__

 

3-Funções key() e current();

 

Bem segundo a documentação do PHP que está disponível em português:

 

Função key() -> Retorna uma chave de um array;

 

Função current() -> Retorna o elemento corrente em um array;

 

Apesar do descrito acima ao testar as funções na prática a única coisa que pude notar é que ambas as funções me retornam o indice do elemento corrente no array. Então alguém poderia me explicar a real diferença entre essas funções? O que seria a chave de um array? (E se por algum acaso a chave de uma array for o seu índice corrente alguém poderia me explicar qual das duas funções é mais performática ou adequada para ser usada e o porquê?)

 

4-Theads e PhP

 

Já tive contato com desenvolvimento java descktop e web e um assunto que me assustou bastante e que me deu muito trabalho e até hoje não apreendi direito foi theads a teoria eh simples, entretanto implementa-la no sistema é algo complicado. E estou em busca de estágio por isso estou tentando desenvolver as coisas da forma mais profissional possível para não tomar uma porrada tão grande quando conseguir um estágio(porrada = dificuldades para realizar uma tarefa). Logo vem minha pergunta: Em sistemas web de verdade é preciso usar threads ou no mundo Web existe algum gerenciamento para threads já implementado? O PHP tem alguma forma de implementar ou simplificar as coisas para mim? E se thread for uma coisa tão importante no mundo do desenvolvimento real, alguém poderia me passar algum bom tutorial de threads em PHP. (Realmente tive um péssimo primeiro contato com este assunto srsrsr)

 

Desde já agradeço a resposta de todos (y)

Compartilhar este post


Link para o post
Compartilhar em outros sites

1- Functions sem return?

 

Cara, você não esta enganado.

Seria simplesmente tirar o retorno para ter uma "procedure", mas creio eu que essa palavra não é utilizada por que functions/procedure são praticamente a mesma coisa.

 

Funções e Procedimentos.

 

Automaticamente uma função recebe um procedimento tendo ela retorno ou não.

 

 

 

2-Palavras que começam e terminam com "__palavra__"

Isso no php é chamado de Constantes Mágicas.

http://www.php.net/manual/pt_BR/language.constants.predefined.php

 

 

 

 

3-Funções key() e current();

 

Primeira diferença básica é que um retorna a chave e outro retorna o valor.

 

todo array tem seu indice, que é o que identifica cada valor.

mesmo se vc criar um array sem definir uma chave automaticamente sera criado uma para que os valores possam ser diferenciados.

 

enrolo aqui, mas tarde edito e termino as explicações

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa Vinícius essa parada de constantes mágicas são realmente mágicas srsrsr

 

Sobre a questão do array relaxe já entendi, sei o conceito de array só que tinha me atrapalhado quando fiz os testes aqui já que no php pode-se definir um identificador para o índice do array. Ai quando fiz os teste tive a impressão de que as mesmas coisas estavam sendo escritas só que quando lê sua resposta fiz novas teste e pude constatar a diferença srsrsr

 

Mas e sobre as threads eh algo fundamental ou em web rola algum gerenciamento que torna isso abstrato para o desenvolvedor? por que em java descktop para mim foi um terror.

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP não tem suporte a multithreading. De fato não faz falta, poderia servir para otimizar algumas coisas, mas como não têm, a gente se vira com o que existe.

 

As threads no caso ficam no nível superior, no servidor web (apache, IIS, ngix, etc.) que processam as requisições entrantes e criam, segundo a demanda, as threads que irão executar a aplicação PHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Henrique Barcelos, basta desenvolver a aplicação que o tomcat se encarrega disso para mim certo?



Ah sim outra dúvida que eu esqueci de publicar la no inicio.

 

5- PHP e mysql.

 

Sempre vejo muita coisa de PHP e mysql, até mesmo as funções de interação com o banco de dados no PHP levam o nome Mysql na frente. Isso significa que o único banco de dados que consegui trabalhar associado com o PHP é o mysql?

 

Por que no java você adiciona o driver do banco que quer trabalhar, mas no php as funções já tem o nome mysql e até os servidores locais como o easyPhp e o wamp-serve já trabalham por padrão com o mysql.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, é que é a mais utilizada pelo fato de como vc já citou as ferramentas já vem com ela por padrão, mas o PHP conecta em qualquer banco.

Postgres, SQL SERVER, ORACLE etc..

 

http://php.net/manual/pt_BR/ref.pgsql.php

 

http://php.net/manual/pt_BR/ref.pdo-dblib.php

 

http://php.net/manual/pt_BR/ref.pdo-oci.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, mas agora fiquei curioso para saber o que levou essas ferramentas(easyPhp e o wampServer) a trabalharem com o mysql.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Popularidade..

 

Wordpress é estupidamente popular e ele usa o MySQL, para esses pseudo-desenvolvedores, o wordpress é quase que uma linguagem de programação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Popularidade..

 

Wordpress é estupidamente popular e ele usa o MySQL, para esses pseudo-desenvolvedores, o wordpress é quase que uma linguagem de programação.

 

Putz... Rir com piada de programação é complicado, mas essa... :clap:

 

Uma coisa que não foi comentado sobre as constantes mágicas assim como alguns outros recursos escondidos e obscuros do PHP é que até parece que eles são nomeados da forma mais esdrúxula e não ortodoxas possíveis para que ninguém no planeta sobrescreva alguma coisa acidentalmente.

 

Veja, a "convenção" para definição de constantes é tudo em maiúsculas, espaços separados por underscore e sempre começando com uma letra, nunca um número ou um símbolo.

 

E as constantes mágicas são nomeadas justamente na direção oposta para que você não faça um:

 

 

define( __DIR__, getcwd() );

 

Nem sei se isso seria possível. :closedeyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui em casa eu posso falar com maiores informações.

 

Esse exemplo aí que eu passei deve sim ser possível SE a versão do PHP for inferior a 5.3, que foi quando essa constante mágica em particular foi adicionada.

 

Alguém tem um 5.2 aí pra testar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho... À parte do deslize de ter esquecido as aspas, por esse site, tanto o 5.2.17 quanto o 5.3.19 rodaram sem erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas o valor não é alterado.

Isso é verdade, mas não deixa de ser uma inconsistência, assim como aquela das constantes de classe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, as das classes fazem sentido. A constante Classe1::FOO não é a mesma da Classe2:FOO, mesmo se a Classe2 herda da Classe1.

 

__DIR__ e __NAMESPACE__ foram adicionadas no PHP 5.3 e __TRAIT__ no 5.4.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é verdade, mas não deixa de ser uma inconsistência, assim como aquela das constantes de classe.

Lembrei de uma discussão onde o cara que criticava o PHP dizia que se definem constantes globais com [inline]define[/inline] e de classes com [inline]const[/inline]

 

Aí como réplica, lembraram-no que era possível usar [inline]const[/inline] fora das classes também

 

Tréplica: "Ok, mas eu não posso fazer [inline]const FOO = 2 + 1;[/inline]"

 

Fatality: "Acho que você precisa rever seus conceitos do que é uma constante."

 

Se uma constante permanece inalterada, é isso que eu espero dela. Se você precisa mudar o valor de uma constante, alguma coisa está muito errada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exato, as constantes mágica são super úteis mas não se encaixam em categoria nenhuma, a não ser a de "constantes mágicas" (doh)..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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