terça-feira, 28 de agosto de 2012

Sprintf no PHP

Essa é para vc que é novo no PHP ou que pretende tirar a certificação ZCE e esta com receio sobre umas funções pouco usadas em seu dia a dia... O sprintf é uma delas.... Opa opa espera ai? O sprintf não é um printf? Sim, mas printf "echoa" o resultado, enquanto que sprintf retorna. 

Então significa que entendendo o printf eu vou entender o sprintf?
 Sim! 

Vamos ao entendimento então!


 A função recebe basicamente 2 argumentos, o primeiro é o formato que a string deve aparecer e o segundo a própria string, por exemplo:

printf("Eu tenho %d anos", 23);  


Veja que %d representa um valor inteiro, se você tentar usar uma float ou um real ele não irá funcionar, veja uma tabela com alguns dos tipos aceitos:

TipoDescrição
%bArgumento considerado um inteiro; apresentado com um numero binário
%cArgumento considerado um inteiro; apresentado com um valor correspondente em ASCII
%dArgumento considerado um inteiro; apresentado com um numero decimal
%fArgumento considerado numero de ponto flutuante; apresentado com um numero de ponto flutuante
%oArgumento considerado um inteiro; apresentado com um numero octal
%sArgumento considerado um string; apresentado com um numero string
%uArgumento considerado um inteiro; apresentado com um numero decimal não assinado
%xArgumento considerado um inteiro; apresentado com um numero hexadecimal em letras minusculas
%XArgumento considerado um inteiro; apresentado com um numero hexadecimal em letras maiusculas


Caso você queira utilizar mais de um valor pode passa os argumentos separados por virgulas repeitando a sequencia que foram declarados:
  1. <?php 
  2.     printf("Eu sou o %s e tenho %d anos""PV", 23);  
  3. ?>  
Legal e tudo isso pode ser aplicado com o sprintf ? Sim, mas lembre-se, ele retorna o valor e não imprime.


Tudo muito legal não é? Se vc veio aqui para garantir que esta pronto para ZCE então lá vai um QUIZ tipico da prova para vc responder:


What will the following code print out?
  1. <?php  
  2.     echo sprintf('"%4d"', ord('a'));  
  3. ?>  
E ai sabe a resposta? Em breve eu coloco aqui, com uma explicação.
[Resposta: " 97"]
[Explicação:  No format o número 4 representa um espaço em branco(a equerda pq é positivo, se negativo seria a direita) as aspas são apenas para exibir o d e o % vc ja conhece e por fim a função ord() retorna o valor ASCII do caracter, e o valor ASCII de
a é = 97]

quarta-feira, 22 de agosto de 2012

Jquery selecionando elemento pelo name e value

Para vc que precisa selecionar elementos de formularios pelo name E pelo value com jquery isso fica bem simples.


Mas imagine um caso em que vc precisa manipular um elemento e vc só tem o name, ficaria fácil se essa PO... de elemento não fosse um radio que um grupo tem nomes iguais :(.


 Então teriamos um elemento html do tipo radio, temos o name e oq mais? Opa! Temos o value também. Que tal selecionar um elemento por tipo, name, e value? Vamos tentar?

Seletor jquery para input radio nome valor
  1. $('input:radio[name="nomequalquer"][value="valor"]').attr("checked",true);

Ok, vamos analisar esse seletor?
Selecionamos primeiro um input do tipo radio "input:radio", depois o nome "name='nomequalquer']" e por ultimo o valor(value) "[value='valor']" e ai apenas para exemplo eu faço o "check" nesse elemento.

Veja que para selecionar um item pelo name e pelo value precisamos coloca-los entre colchetes.



PRONTO!
Certo, o bom desse post é q não preciso explicar basicamente nada, é só mostrar o seletor. rsrs

quinta-feira, 16 de agosto de 2012

Type Hinting no PHP

Olá amigos tudo bem? Hoje serei breve (acho que essa frase virou prefixo dos meus ultimos posts... Oo)




Bem vamos lá....

                                 TYPE HINTING


A partir do PHP 5.0 foi introduzido o Type Hinting, mesmo sendo relativamente velho as pessoas não sabem o que é pois bem, traduzindo Type Hinting é "Indução de Tipo". Particularmente eu não gosto das traduções ao pé da letra pois no mundo da TI isso mais atrapalha do que ajuda, mas nesse caso a tradução ao pé da letra vai ajudar e muito então vamos fazer uma "análise sintática"
da tradução!




Indução de tipo, indução -> alguém está induzindo algo e tipo, esse algo é o tipo. Agora, pesquisando em que contexto isso se refere nós podemos entender que indução de tipo é uma função dizer qual tipo ela recebe, mais o menos assim:
 Exemplo type hinting
  1. /* Type Hinting */
  2. function insereLista(\Lib\Nucleo\Pessoa $pessoa){
  3.         /*
  4.         * inserindo na lista....
  5.         */
  6. }



Temos a função insereLista que recebe um parametro $pessoa... mas o que é esse pessoa? Antes do parametro colocamos a classe em que esse parametro é uma instância dizendo para a função o tipo do parametro. Ficando mais coeso o código e ainda bem fácil de dar manutenção.

Legal é só isso? Funciona com tipo primitivo? :D

Não!

O Type Hinting foi introduzido no PHP 5.0 para objetos e 5.1 para arrays os tipos escalares ainda não é nativo mas, caso vc queira usa-los é necessário o uso da extensão SPL_Types que vc pode ver aqui




PS: Não confundam isso com CAST... não tem nada haver satangoss nessa ideia ai heinn?!


so.... fui.

Mais? php.net

segunda-feira, 13 de agosto de 2012

Status CODE HTTP

Uma lista completa de valores númericos do retorno de status de HTTP request. Conforme a seguir

Antes de ir a fundo podemos classificar assim:

Retornos 1xx = Informational, 2xx = Success, 3xx = Redirection, 4xx = Unauthorized, 5xx Error



(Util para certificação de tecnologias voltadas para a web, provas, concurso e etc...)

Success 2xx

These codes indicate success. The body section if present is the object returned by the request. It is a MIME format object. It is in MIME format, and may only be in text/plain, text/html or one fo the formats specified as acceptable in the request.


OK 200

The request was fulfilled.


CREATED 201

Following a POST command, this indicates success, but the textual part of the response line indicates the URI by which the newly created document should be known.


Accepted 202

The request has been accepted for processing, but the processing has not been completed. The request may or may not eventually be acted upon, as it may be disallowed when processing actually takes place. there is no facility for status returns from asynchronous operations such as this.


Partial Information 203

When received in the response to a GET command, this indicates that the returned metainformation is not a definitive set of the object from a server with a copy of the object, but is from a private overlaid web. This may include annotation information about the object, for example.


No Response 204

Server has received the request but there is no information to send back, and the client should stay in the same document view. This is mainly to allow input for scripts without changing the document at the same time.


Error 4xx, 5xx

The 4xx codes are intended for cases in which the client seems to have erred, and the 5xx codes for the cases in which the server is aware that the server has erred. It is impossible to distinguish these cases in general, so the difference is only informational.
The body section may contain a document describing the error in human readable form. The document is in MIME format, and may only be in text/plain, text/html or one for the formats specified as acceptable in the request.


Bad request 400

The request had bad syntax or was inherently impossible to be satisfied.


Unauthorized 401

The parameter to this message gives a specification of authorization schemes which are acceptable. The client should retry the request with a suitableAuthorization header.


PaymentRequired 402

The parameter to this message gives a specification of charging schemes acceptable. The client may retry the request with a suitable ChargeTo header.


Forbidden 403

The request is for something forbidden. Authorization will not help.


Not found 404

The server has not found anything matching the URI given


Internal Error 500

The server encountered an unexpected condition which prevented it from fulfilling the request.


Not implemented 501

The server does not support the facility required.


Service temporarily overloaded 502 (TO BE DISCUSSED)

The server cannot process the request due to a high load (whether HTTP servicing or other requests). The implication is that this is a temporary condition which maybe alleviated at other times.


Gateway timeout 503 (TO BE DISCUSSED)

This is equivalent to Internal Error 500, but in the case of a server which is in turn accessing some other service, this indicates that the respose from the other service did not return within a time that the gateway was prepared to wait. As from the point of view of the clientand the HTTP transaction the other service is hidden within the server, this maybe treated identically to Internal error 500, but has more diagnostic value.
Note: The 502 and 503 codes are new and for discussion, September 19, 1994

Redirection 3xx

The codes in this section indicate action to be taken (normally automatically) by the client in order to fulfill the request.

Moved 301

The data requested has been assigned a new URI, the change is permanent. (N.B. this is an optimisation, which must, pragmatically, be included in this definition. Browsers with link editing capabiliy should automatically relink to the new reference, where possible)
The response contains one or more header lines of the form
       URI: <url> String CrLf

Which specify alternative addresses for the object in question. The String is an optional comment field. If the response is to indicate a set of variants which each correspond to the requested URI, then the multipart/alternative wrapping may be used to distinguish different sets


Found 302

The data requested actually resides under a different URL, however, the redirection may be altered on occasion (when making links to these kinds of document, the browser should default to using the Udi of the redirection document, but have the option of linking to the final document) as for "Forward".
The response format is the same as for Moved .


Method 303

 Method: <method> <url>
 body-section
Note: This status code is to be specified in more detail. For the moment it is for discussion only.
Like the found response, this suggests that the client go try another network address. In this case, a different method may be used too, rather than GET.
The body-section contains the parameters to be used for the method. This allows a document to be a pointer to a complex query operation.
The body may be preceded by the following additional fields as listed.


Not Modified 304

If the client has done a conditional GET and access is allowed, but the document has not been modified since the date and time specified in If-Modified-Sincefield, the server responds with a 304 status code and does not send the document body to the client.
Response headers are as if the client had sent a HEAD request, but limited to only those headers which make sense in this context. This means only headers that are relevant to cache managers and which may have changed independently of the document's Last-Modified date. Examples include Date , Server and Expires .
The purpose of this feature is to allow efficient updates of local cache information (including relevant metainformation) without requiring the overhead of multiple HTTP requests (e.g. a HEAD followed by a GET) and minimizing the transmittal of information already known by the requesting client (usually a caching proxy).


Original: http://www.w3.org/Protocols/HTTP/HTRESP.html

quarta-feira, 8 de agosto de 2012

Exemplo integrando o Zend Framework e o Doctrine

O início sempre é a parte mais complicada para alguém que está aprendendo um determinado framework, pois ele se depara com uma quantidade grande de novas informações a serem "digeridas" e por conta disse foi criado o ZeDoc.  


Na maioria das vezes falta um projeto básico "Hello World" para apresentar as funcionalidades básicas para o usuário. Algo semelhante ao que ocorre no aprendizado das linguagens de programação.
Em função disto, o ZeDoc foi criado para apresentar um projeto (ou template) exemplo utilizando o Zend Framework em conjunto com o Doctrine, contendo algumas funcionalidades básicas para um projeto, como por exemplo:

Informações mais detalhadas sobre o projeto (como instalar, funcionalidades implementadas) podem ser encontradas em: no site do projeto, aqui mesmo (em futuros artigos) e ali (em futuros artigos)

quarta-feira, 1 de agosto de 2012

Heredoc e Nowdoc no PHP

Esse será mais um dos meus posts estilo "The Flash" com o objetivo de te auxiliar para a certificação Zend.

Heredoc e Nowdoc o que é isso?
Vou responder essa pergunta com poucas palavras o que acha?

Heredoc e Nowdoc foram criados para strings multilinhas. E ponto, é só isso.

Legal, mais pq 2 funções e não uma?


Me diga, quando vc cria uma string com aspas "duplas" e exibe ela na tela o php não interpreta tudo dessa string? Exemplo:
 
  1. $nome = "Paulo";
  2. echo "Oi $nome"; // Exibe Oi Paulo

E quando vc não quer que interprete o que vc faz? Vc usa o Apóstrofo (vulgo aspas simples) correto? Ficando assim;
 
  1. $nome = "Paulo";
  2. echo 'Oi $nome'; // Exibe Oi $nome


Legal! Pois é por isso que existe o Heredoc e o Nowdoc, onde o Heredoc interpreta variaveis e escape, enquanto que o Nowdoc não.

Se associarmos isso podemos dizer que 
Heredoc = ""
Nowdoc = ''



Legal né?


Ta, mas e como eu uso eles?


A utilização é bem simples, utilizamos o delimitador <<< seguido de um nome qualquer como marcação, e fechamos com o nome seguido de ponto e virgula.

Por exemplo:
Utilizando o heredoc
  1. $heredoc = <<<EXEMPLO
  2.     Texto texto
  3.     Texto texto  
  4. EXEMPLO;
   
UTILIZANDO O NOWDOC
  1. $nowdoc: <<<'EXEMPLO'
  2.     Texto texto
  3.     Texto texto  
  4. EXEMPLO;

    Veja que o que muda do heredoc para o now doc na questão da syntax é que o Nowdoc tem o Apóstrofo (vulgo aspas simples) enquanto que o Heredoc não.


 E ai, simples não é? Se vc não entendeu então da uma xingada aqui abaixo.

OBS: Nowdoc só esta disponível a partir do PHP 5.3

 FUI!