php the right way gh pages

php the right way gh pages


DisciplinaDesenvolvimento Web II16 materiais133 seguidores
Pré-visualização41 páginas
vai ter qualquer impacto perceptível sobre a sua aplicação.
Tentar reescrever código para usar um ou o outro é sempre um exercício de futilidade, de modo a evitar este micro-otimização, a menos que você realmente compreenda o significado e o impacto das diferenças.
[Desmentindo o mito de desempenho das aspas simples]: http://nikic.github.io/2012/01/09/Disproving-the-Single-Quotes-Performance-Myth.html
## Operadores Ternários
O uso de operadores ternários é uma ótima forma de condensar seu código, mas eles são geralmente usados em excesso.
Apesar de operações ternárias poderem ser agrupadas e aconselhado usar uma por linha para aumentar a legibilidade.
{% highlight php %}
<?php
$a = 5;
echo ($a == 5) ? 'yay' : 'nay';
{% endhighlight %}
// vs
{% highlight php %}
$b = 10;
echo ($a) ? ($a == 5) ? 'yay' : 'nay' : ($b == 10) ? 'excessive' : ':('; // excesso de agrupamento sacrifica a legibilidade
{% endhighlight %}
Para usar 'return' em um operador ternário utilize a sintaxe correta.
{% highlight php %}
<?php
$a = 5;
echo ($a == 5) ? return true : return false; // esse exemplo irá disparar um erro
// vs
$a = 5;
return ($a == 5) ? 'yay' : 'nope'; // esse exemplo irá retornar 'yay'
{% endhighlight %}
Note que você não precisa usar um operador ternário para retornar um valor booleano. Um exemplo disto seria.
{% highlight php %}
<?php
$a = 3;
return ($a == 3) ? true : false; // esse exemplo irá retornar true ou false se $a == 3
// vs
$a = 3;
return $a == 3; // esse exemplo irá retornar true ou false se $a == 3
{% endhighlight %}
Isso também pode ser dito para as operações (===, !==, !=, == etc).
#### Utilizando parênteses com operadores ternários para formato e função
Quando se utiliza um operador ternário, os parênteses podem melhorar a legibilidade do código e também incluir as uniões 
dentro de blocos de instruções. Um exemplo de quando não há nenhuma exigência para usar de parênteses é:
{% highlight php %}
<?php
$a = 3;
return ($a == 3) ? &quot;yay&quot; : &quot;nope&quot;; // vai retornar yay ou nope se $a == 3
// vs
$a = 3;
return $a == 3 ? &quot;yay&quot; : &quot;nope&quot;; // vai retornar yay ou nope se $a == 3
{% endhighlight %}
O uso de parênteses também nos dá a capacidade de criar união dentro de um bloco de declaração onde o bloco será 
verificado como um todo. Tal como este exemplo abaixo que retornará verdadeiro se ambos ($a == 3 e $b == 4) são 
verdadeiras e $c == 5 também é verdadeiro.
{% highlight php %}
<?php
return ($a == 3 && $b == 4) && $c == 5;
{% endhighlight %}
Outro exemplo é o trecho de código abaixo que vai returnar true se ($a != 3 e $b != 4) ou $c == 5.
{% highlight php %}
<?php
return ($a != 3 && $b != 4) || $c == 5;
{% endhighlight %}
* [Operadores Ternários](http://php.net/language.operators.comparison)
## Declaração de Variáveis
As vezes programadores tentam tornar seu código mais limpo declarando variáveis predefinidas com um nome diferente. O
que isso faz na realidade e dobrar o consumo de memória do script. No exemplo abaixo, digamos que uma string de exemplo
contém 1MB de dado válido, copiando a variável você aumenta o consumo de memória durante a execução para 2MB.
{% highlight php %}
<?php
$about = 'Uma string com texto bem longo'; // usa 2MB de memória
echo $about;
// vs
echo 'Uma string com texto bem longo'; // usa 1MB de memória
{% endhighlight %}
* [Dicas de Performance](http://web.archive.org/web/20140625191431/https://developers.google.com/speed/articles/optimizing-php)
php-the-right-way-gh-pages/pages/example.md
---
layout: page
title: Example Stand-Alone Page
---
# Page Title
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
php-the-right-way-gh-pages/scripts/setup.js
(function ($) {
 // Load contributors
 var $contributors = $('#contributors');
 var repo_user = 'PHPSP';
 if ( $contributors.length ) {
 var fail = function () {
 $contributors.html('<p>Este projeto não seria possível sem a ajuda de <a href=&quot;https://github.com/' + repo_user + '/php-the-right-way/graphs/contributors&quot;>nossos contribuintes</a> no GitHub.</p>');
 };
 $.ajax({
 cache: false,
 dataType: 'jsonp',
 timeout: 3000,
 type: 'GET',
 url: 'https://api.github.com/repos/' + repo_user + '/php-the-right-way/contributors'
 }).done(function (data) {
 if ( data.data && data.data.length ) {
 var $ul = $('<ul></ul>'), dataLength = data.data.length;
 for ( var i = 0; i < dataLength; i++ ) {
 $ul.append(['<li><a href=&quot;https://github.com/', data.data[i].login, '&quot; target=&quot;_blank&quot;>', data.data[i].login, '</a></li>'].join(''));
 }
 $contributors.html($ul);
 } else {
 fail();
 }
 }).fail(fail);
 }
})(jQuery);
(function ($) {
 //Add current view's highlighting to the navigation
 
 /** helper for highlighting */
 function highlightNav(navLinks,id)
 {
 navLinks.filter('[href=&quot;/#'+id+'&quot;]').addClass(&quot;active&quot;);
 }
 $(window).scroll(function() {
 //console.log(&quot;They see me scrollin, they hatin&quot;);
 //clear highlighting
 var navLinks = $('.site-navigation a');
 navLinks.removeClass(&quot;active&quot;);
 //calc current viewport
 var viewTop = $(window).scrollTop();
 var viewBottom = viewTop + $(window).height();
 //for all h1 and h2 elements, check if they are visible
 //performance tweak: stop each() after the first element is found to be behind view
 var previous = &quot;&quot;;
 var foundOne = false;
 var fallback = &quot;&quot;;
 $('h1, h2').each(function(i,e) {
 //get element position;
 var eTop = $(e).offset().top;
 var eBottom = eTop + $(e).height();
 var id=e.id;
 id = id.replace(&quot;_title&quot;, &quot;&quot;);
 if (eTop >= viewTop) {
 //if we are passed the view and no heading was highlighted yet, store previous one as fallback
 if (! foundOne) {
 fallback=previous;
 }
 if (eBottom <= viewBottom) {
 highlightNav(navLinks, id);
 foundOne = true;
 } else {
 return false; //break the each(), the rest is below
 }
 }
 previous=id;
 });
 //no h1/h2 is in the viewport, so highlight the last one above
 if (! foundOne) {