İçeriğe atla

Seo Araçları

Eğer profosyonel olarak seo çalışmalarını yapacaksanız 2 adet program almanızı tavsiye ederim. Biraz tuzludur ama sürekli bu işi yapıyorsanız değer.

http://www.senuke.com

http://www.scrapebox.com

Scrapebox ile Bloglara yorum atmak için kullanabilirsiniz.

Symfony 3 Giriş Seviyesi Notları

Bundle Oluştuktan sonra
enttiy oluştur

php bin/console doctrine:generate:entity

WebMuhasebeBundle:Fatura

Sonrasında ilişki kurulacak.

İlişkilerde

 /**
 * @ORM\OneToMany(targetEntity="Ilce", mappedBy="Il", cascade={"persist", "remove"})
 */
 private $Ilce;

id göndermek için kullanıyoruz. Kendi id sini karşıya entitye gönderiyor.


/**
 * @ORM\ManyToOne(targetEntity="Il", inversedBy="Ilce")
 * @ORM\JoinColumn(name="il_id", referencedColumnName="id")
 */
 public $il;

Buradaki karşıdan gelen id kayıt ediyor. (ilden gelen id yi kayıt ediyor)

1 ilin birden fazlası ilçesi olabilir ama bir ilçenin ilçesi olamaz.
İl burada one kısmı ilçe many olur.
işlemler bittikten sonra

php bin/console doctrine:generate:entities WebMuhasebeBundle
php bin/console doctrine:schema:update --force

sonrasında sayfalandırmak için kullanmak için aşagıdaki kodu yazıyoruz

 

composer require knplabs/knp-paginator-bundle

şeklinde kurunuz

github linki : https://github.com/KnpLabs/KnpPaginatorBundle

Config.yml içerisinde aşagıdaki kodu ekleyiniz:

knp_paginator:
 page_range: 5 # default page range used in pagination control
 default_options:
 page_name: page # page query parameter name
 sort_field_name: sort # sort field query parameter name
 sort_direction_name: direction # sort direction query parameter name
 distinct: true # ensure distinct results, useful when ORM queries are using GROUP BY statements
 template:
 pagination: KnpPaginatorBundle:Pagination:sliding.html.twig # sliding pagination controls template
 sortable: KnpPaginatorBundle:Pagination:sortable_link.html.twig # sort link template

sonrasında user için

composer require friendsofsymfony/user-bundle "~2.0@dev"

şeklinde kurulum yapınız.

Ekle:

<?php
// app/AppKernel.php

public function registerBundles()
{
$bundles = array(
// ...
new FOS\UserBundle\FOSUserBundle(),
// ...
);
}

Kendi bundlunuze seçip user.php oluşturup

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

public function __construct()
{
parent::__construct();
// your own logic
}
}

içine ekleyin

devamını
http://symfony.com/doc/current/bundles/FOSUserBundle/index.html

adresinden bakabilirsiniz.

a) Doctrine ORM User class

bölümünde

// src/AppBundle/Entity/User.php

kısmında oluşturmuş oldugunuz bundle göre vermeniz gerekmektedir.

İşlemleri bitirdikten sonra crud işlemini yapınız.

Crud Dökümanı
http://symfony.com/doc/current/bundles/SensioGeneratorBundle/commands/generate_doctrine_crud.html

php app/console generate:doctrine:crud

Crud oluşturabilirsiniz.
Oluşturalacak bütün entityler için tek tek yazmanız gerekiyor.

yml yapıyoruz
isim girerkende Örnek WebMuhasebeBundle:fatura

Swift Mailer nedir?

Comproser ile

composer require swiftmailer/swiftmailer

şeklinde kurabilirsiniz.

gmail üzerinden mail göndermek isterseniz

<?php
$pEmailGmail = 'kullaniciadi@gmail.com';
$pPasswordGmail = 'sifreniz';
$pFromName = 'tasarimrehberi.net'; //gozukecek mail adresiş

$pTo = 'gidecekmailadresi@tasarimrehberi.net'; // gonderilecek mail
$pSubjetc = "tasarimrehberi.net deneme"; // konu
$pBody = '<html><body><p>Tasarım Rehberi deneme</p></html></body>'; //body html

$transport = Swift_SmtpTransport::newInstance('smtp.googlemail.com', 465, 'ssl')
->setUsername($pEmailGmail)
->setPassword($pPasswordGmail);

$mMailer = Swift_Mailer::newInstance($transport);

$mEmail = Swift_Message::newInstance();
$mEmail->setSubject($pSubjetc);
$mEmail->setTo($pTo);
$mEmail->setFrom(array($pEmailGmail => $pFromName));
$mEmail->setBody($pBody, 'text/html'); //body html

if($mMailer->send($mEmail) == 1){
echo 'Mail Gonderildi';
}
else {
echo 'Mail Gitmedi';
}
?>{/code]

OOP Nedir? Nasıl Kullanılır

Bu yazıda class yapılardan başlıyarak OOP ile ilgili bir çok yazı paylaşacagız.

OOP Nedir? Nasıl Kullanılır

OOP (Nesne Yönelimli Programlama) ile ilgili kısa bilgiler verecegim.

class okul {
function okul_adi($ad)
{
echo 'Bulunduğunuz okul';
}
}

Örnek 2:

&lt;?php
class okul {
var $bolum = 'Bilgisayar Programciligi';
function okul_adi($ad)
{
echo 'Bulunduğunuz okul: '.$ad;
echo '&lt;br&gt;';
echo $this-&gt;bolum;
}
}

$veri_cek = new okul();
$veri_cek-&gt;okul_adi('Pamukkale Üniversitesi');
?&gt;

Basit Hesap Makinesi

&lt;?php
class hesaplama{
function topla($sayi1,$sayi2) {
   $sonuc = $sayi1 + $sayi2 ;
   return $sonuc;
}
function cikar($sayi1,$sayi2) {
   $sonuc = $sayi1 - $sayi2 ;
   return $sonuc;
}
function carp($sayi1,$sayi2) {
   $sonuc = $sayi1 * $sayi2 ;
   return $sonuc;
}
function bol($sayi1,$sayi2) {
   $sonuc = $sayi1 / $sayi2 ;
   return $sonuc;
}
}

$sayi1 = 23;
$sayi2 =4;

$hesap = new hesaplama();
echo $hesap-&gt;cikar($sayi1,$sayi2);
?&gt;

Global ile fonksiyon dışındaki değişkeni fonksiyonumuza dahil edebiliriz.

&lt;?php
$kimim_ben = 'Nurettin';
 
function hos_geldin() {
   global $kimim_ben;
   echo 'Hoş Geldin ' . $kimim_ben;
}
 
hos_geldin();
?&gt;

 

Orm ve Doctrine

Orm ve Doctrine

 

İlişki Türleri:

One-to-one:

Her iki ilşkidede sadece tek bağlantı kurulabilinir.

 

One-to-many:

Bu ilişki türünden bir tane nesne birden fazla ilişki kurabilir.

Firma – fatura şeklinde olabilir. Bir firmanın birden fazla faturası olabilir ama fatura tek bir firmaya aittir.

İlçe – il

 

Many-to-one:

One-to-many tam tersidir.

İl – ilçe

 

Many-to-many:

Birbirleri ile birden fazla ilişki kuruyorlarsa many-to-many olur.

 

ORM NEDİR (Object Relational Mapping)

Orm ilişkisel veritabanlarının bir yazılım tarafından bir birleri ile ilişkilendirilmesine orm denir.

Crud işlemleri ile orm işlemlerini rahatlıkla yapabilirsiniz.

ORM AVANTAJLARI:

  • Geliştirme Hızı Yüksektir
  • Standart Kod Kullanımı ile spagetti koda çözüm
  • Veritabanı değişimini istediğiniz gibi yapabilirsiniz (Mysql,Postsql vb.)
  • İş yükünüzü hafifletir.
  • Güvenlik Açıklarını engeller
  • Bir çok araç kullanmasını sağlar.
  • Tabloları sınıfa çevirir veritabanı ile pek ugraşmazsınız.
  • Daha az sql sorgusu yazarsınız
  • Veritabanızı harita şeklinde sunar böylece veritabanını kolayca anlarsınız.

 

ORM DEZAVANTAJLARI

  • Performans bakıldığında biraz yavaştır. Küçük projelerde kesinlikle tavsiye edilmez.
  • Öğrenme süreci kimsen zordur
  • Modelleme ve Kulllanım hataları yanlış olabiliyor.

PHP İLE KULLANILAN ORM KÜTÜPHANESİ

  • Doctrine
  • Php activerecord
  • Eloquent ORM

Symfony kullanan kişiler doctrine kullanır. Eskiden php activerecord çok kullanırdı ama gün geçtikçe kullanımı azaldıgı kanısındayım.

Doctrine bir çok framewok ile entegre olduğu için tavsiye ediyorum. Smyfony ile doctrine kullanmayı başladım.  İsterseniz sitesinden comproser ile yüklüyebilirsiniz.

Doctrinede Entity kavramı vardır.

  • Annotation
  • XML
  • YAML
  • PHP Kodu

Entity sayesinde doctrine ve crud işlemleri yapabilirsiniz.

REPOSITORY

Veritabanından nesneleri sorgulamak için kullanılan sınıftır.

Eğer size entityRepository ve query builder yetmediği durumlarda Dql kullanabilirsiniz. Performans kayıplarındada DSQL tavsiye ederim. SQL kodlarını kullanabiliyorsunuz.

Twig Tema Kullanımı

Öncelikle kullanabilmeniz için bilgisayarınızda comproser kurulu olması gerekiyor.

sonrasında işlem yapacagınız klasörün içine girererek

composer require "twig/twig:~1.0"

*:~1.0 bu kısmı silerseniz en son versiyonu kurabilirsiniz.

yazmanız yeterlidir. Artık kurulumu tamamlandı.

Basit olarak denemek isterseniz


&lt;?php
require_once 'vendor/autoload.php';

$loader = new Twig_Loader_Array(array(
'index' =&gt; 'Hello {{ name }}!',
));
$twig = new Twig_Environment($loader);

echo $twig-&gt;render('index', array('name' =&gt; 'Fabien'));
?&gt;

symfony gibi framework lerde hazır gelmektedir.

Bu yüzden extra olarak kurmanıza gerek yoktur. Bu yazıyı bilgi amaçlı sizlere ilettik. Sitesinden gerekli ayarları bakabilirsiniz.

Eskiden smarty kullanırdı şimdi symfony de cogu geliştirici twig kullandığı için popüler oldu.

Aşağıdaki kod sayesinde başka bir sayfayı yükleme yapabiliyoruz.

{% extends "layout.html.twig" %}

Her sayfada kullanacaklarımızı extends ile yüklüyebiliyoruz.

ifdöngüsü kullanımı

<pre class="">
{% if makalaler %}
{% endif %}

Blok kullanımı

{% block content %} içerikler burada { % endblock %}

Twig Tema Motorunun ideler için eklentileri var. Aşagıdakler gibi.