Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Smartiyi Çözemedim kendi smartimi yazayımmı :)

merhaba arkadaşlar smartiyi çözemedim kendi framework'ümü yazmaya karar verdim ama amerikayı baştan keşfetmeye gerek varmı diye düşünüyorum codeigniter'deki gibi bişeler yapsam diye düşndüm codeigniter'ıda kullnmak istemiyorum ama MVC katmanlı ypmk istiyorum mesela



<?php 

class view{

private $file;
private static $deger = array();
public function views($file,$deger){
extract($deger);
include("template/".$file.".tpl");

}

}


$a = new view();

$degerler['ad'] = "furkan";
$degerler['baslik'] = "Sayfa Baslık";
$degerler['sayi'] = array("1","2","3","4","5");
$a->views("deneme2",$degerler);

?>


bu view kodları

Benim Adım  <?=$ad;?> <br />

<?php foreach($sayi as $a) {echo $a."<br />"; } ?>


buda view deki ana sayfam da yani mantıken biraz aykırı gibi geldi bana view de php kodları çalıştırmak sizce ne yapayım??
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • xuma adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    171 cevap - 1 soru
    Amerekiyı yeniden keşfetmek seni profesyonel yapar , olanı kullanmak orta seviyeli bir yazılımcı yapar.
    • sharq adlı üyenin fotoğrafı sharq
      haklısın ama view kodunda gördüğün gibi <?php echo $ad; ?> olarak yazıyorum yani tasarım kısmına php kodlarını karıştırmak pek mantıklı gelmedi bana smartide {} kullanılıyor
      10 yıl önce yazılmış
    • xuma adlı üyenin fotoğrafı xuma
      O kadarından birşey olmaz foreachleride ;
      <?php foreach($sayi as $a): ?> 
      <p>Şu kadar ödemeniz gerek:<?=$a;?></p>
      <? endforeach;?>
      

      Şeklinde kullan.Açıkcası bazen template içinde rahat hareket edebilmek güzeldir.Yoksa <?=$a;?> ve bu {a} arasında çok bir fark yok.Ama illa değiştireceksen internette bulabileceğin basit örneklerden biri;
      public function set($key, $value) {
          $this->values[$key] = $value;
      }
        
      public function output() {
          if (!file_exists($this->file)) {
              return "Error loading template file ($this->file).<br />";
          }
          $output = file_get_contents($this->file);
        
          foreach ($this->values as $key => $value) {
              $tagToReplace = "[@$key]";
              $output = str_replace($tagToReplace, $value, $output);
          }
        
          return $output;
      }
      

      include("template.class.php");
        
      $profile = new Template("user_profile.tpl");
      $profile->set("username", "monk3y");
      $profile->set("photoURL", "photo.jpg");
      $profile->set("name", "Monkey man");
      $profile->set("age", "23");
      $profile->set("location", "Portugal");
        
      echo $profile->output();
      
      10 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      foreach'i anladım zaten bnde öle düşünmüştürm ama diğer yazdığın sınıfların ne olduğunu nasıl kullnılacağını pk anlamadım
      10 yıl önce yazılmış
    • xuma adlı üyenin fotoğrafı xuma
      http://www.cyferweb.com/blog/creating-a-basic-php-template-engine/
      yada codeigniter'ı aç parserını kontrol et ;
      <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
      /**
       * CodeIgniter
       *
       * An open source application development framework for PHP 5.1.6 or newer
       *
       * @package		CodeIgniter
       * @author		ExpressionEngine Dev Team
       * @copyright	Copyright (c) 2008 - 2011, EllisLab, Inc.
       * @license		http://codeigniter.com/user_guide/license.html
       * @link		http://codeigniter.com
       * @since		Version 1.0
       * @filesource
       */
      
      // ------------------------------------------------------------------------
      
      /**
       * Parser Class
       *
       * @package		CodeIgniter
       * @subpackage	Libraries
       * @category	Parser
       * @author		ExpressionEngine Dev Team
       * @link		http://codeigniter.com/user_guide/libraries/parser.html
       */
      class CI_Parser {
      
      	var $l_delim = '{';
      	var $r_delim = '}';
      	var $object;
      
      	/**
      	 *  Parse a template
      	 *
      	 * Parses pseudo-variables contained in the specified template view,
      	 * replacing them with the data in the second param
      	 *
      	 * @access	public
      	 * @param	string
      	 * @param	array
      	 * @param	bool
      	 * @return	string
      	 */
      	public function parse($template, $data, $return = FALSE)
      	{
      		$CI =& get_instance();
      		$template = $CI->load->view($template, $data, TRUE);
      
      		return $this->_parse($template, $data, $return);
      	}
      
      	// --------------------------------------------------------------------
      
      	/**
      	 *  Parse a String
      	 *
      	 * Parses pseudo-variables contained in the specified string,
      	 * replacing them with the data in the second param
      	 *
      	 * @access	public
      	 * @param	string
      	 * @param	array
      	 * @param	bool
      	 * @return	string
      	 */
      	function parse_string($template, $data, $return = FALSE)
      	{
      		return $this->_parse($template, $data, $return);
      	}
      
      	// --------------------------------------------------------------------
      
      	/**
      	 *  Parse a template
      	 *
      	 * Parses pseudo-variables contained in the specified template,
      	 * replacing them with the data in the second param
      	 *
      	 * @access	public
      	 * @param	string
      	 * @param	array
      	 * @param	bool
      	 * @return	string
      	 */
      	function _parse($template, $data, $return = FALSE)
      	{
      		if ($template == '')
      		{
      			return FALSE;
      		}
      
      		foreach ($data as $key => $val)
      		{
      			if (is_array($val))
      			{
      				$template = $this->_parse_pair($key, $val, $template);
      			}
      			else
      			{
      				$template = $this->_parse_single($key, (string)$val, $template);
      			}
      		}
      
      		if ($return == FALSE)
      		{
      			$CI =& get_instance();
      			$CI->output->append_output($template);
      		}
      
      		return $template;
      	}
      
      	// --------------------------------------------------------------------
      
      	/**
      	 *  Set the left/right variable delimiters
      	 *
      	 * @access	public
      	 * @param	string
      	 * @param	string
      	 * @return	void
      	 */
      	function set_delimiters($l = '{', $r = '}')
      	{
      		$this->l_delim = $l;
      		$this->r_delim = $r;
      	}
      
      	// --------------------------------------------------------------------
      
      	/**
      	 *  Parse a single key/value
      	 *
      	 * @access	private
      	 * @param	string
      	 * @param	string
      	 * @param	string
      	 * @return	string
      	 */
      	function _parse_single($key, $val, $string)
      	{
      		return str_replace($this->l_delim.$key.$this->r_delim, $val, $string);
      	}
      
      	// --------------------------------------------------------------------
      
      	/**
      	 *  Parse a tag pair
      	 *
      	 * Parses tag pairs:  {some_tag} string... {/some_tag}
      	 *
      	 * @access	private
      	 * @param	string
      	 * @param	array
      	 * @param	string
      	 * @return	string
      	 */
      	function _parse_pair($variable, $data, $string)
      	{
      		if (FALSE === ($match = $this->_match_pair($string, $variable)))
      		{
      			return $string;
      		}
      
      		$str = '';
      		foreach ($data as $row)
      		{
      			$temp = $match['1'];
      			foreach ($row as $key => $val)
      			{
      				if ( ! is_array($val))
      				{
      					$temp = $this->_parse_single($key, $val, $temp);
      				}
      				else
      				{
      					$temp = $this->_parse_pair($key, $val, $temp);
      				}
      			}
      
      			$str .= $temp;
      		}
      
      		return str_replace($match['0'], $str, $string);
      	}
      
      	// --------------------------------------------------------------------
      
      	/**
      	 *  Matches a variable pair
      	 *
      	 * @access	private
      	 * @param	string
      	 * @param	string
      	 * @return	mixed
      	 */
      	function _match_pair($string, $variable)
      	{
      		if ( ! preg_match("|" . preg_quote($this->l_delim) . $variable . preg_quote($this->r_delim) . "(.+?)". preg_quote($this->l_delim) . '/' . $variable . preg_quote($this->r_delim) . "|s", $string, $match))
      		{
      			return FALSE;
      		}
      
      		return $match;
      	}
      
      }
      // END Parser Class
      
      /* End of file Parser.php */
      /* Location: ./system/libraries/Parser.php */
      
      
      10 yıl önce yazılmış 10 yıl önce güncellenmiş
    • sharq adlı üyenin fotoğrafı sharq
      işte bu faydalı olabilir, peki sence hiç uğraşmayayımmı yani tasaraım alanında php kodlarımı kullnayaım yoksa güzel bişiler ortaya çıkartmak için uğraşayımmı ?
      10 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      şimdi denedim ve gerçekten süper çalışıyor bnce bu saatten snra bnm için smartiye gerek kalmadı kendi template engine'mi yaparım gibi geliyor cevaplarınız için teşekkür ederim..
      10 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      şuan birşey fark ettim :)
      mesela verdiğin linkteki kodu
      'message2' => array('name1' => 'Furkan', 'name2' => 'Çelik') yapıp
      example.tpl de de {message2} yaptığımda array yazıyor
      {message2}
      {name1}
      {/message2}
      yapıncada ilk array yazyor snrada {name1}
      {/message2} yazıyor bu sorunu nasıl çözeriz smartide loop selection falan vardı
      10 yıl önce yazılmış
    • xuma adlı üyenin fotoğrafı xuma
      Kullanmadığım için kesin birşey söyleyemeceğim ama amaçları basit örnek olduğu için fazla ayrıntıya girmemişlerdir.Bu noktada codeigniter parserına bakmanda yarar var eksikleri oradan tamam.Biraz uğraşarak çözüme ulaşabilirsin.
      10 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      kendi tema motorumu yazdım paylaşayım istedim :)



      tema sınıfı
      <?php 
      class basicTemplateEngine 
      { 
          var $Template; // Current Templates Name. 
          var $TemplateExt = '.tpl'; // Templates File extension. 
          var $TemplateDir = './templates/'; // Our Templates Directory. 
           
      	 
          function SelectTemplateFile($file, $error_line = 0, $erro_file = '') 
          { 
              if(is_dir($this->TemplateDir)) // If the $templatedir exsits. 
              { 
                  if(!file_exists($this->TemplateDir.$file.$this->TemplateExt)) 
                  { 
                      $error = "<b>File:</b> ".$erro_file."<br/> 
                      <b>Line:</b> ".$error_line."<br/> 
                      <b>Date:</b> ".date("D M j G:i Y")."<br/><br/> 
                      Error loading ".$this->TemplateDir.$file.$this->TemplateExt.", 
      file not found."; 
                      return die($error); 
                  } 
                  elseif(file_exists($this->TemplateDir.$file.$this->TemplateExt)) 
                  { 
                      return $this->Template=file_get_contents($this->TemplateDir.
      $file.$this->TemplateExt); 
                  } // End ElseIf. 
              } 
              elseif(!is_dir($this->TemplateDir))  
              { 
                      $error = "<b>File:</b> ".$erro_file."<br/> 
                      <b>Line:</b> ".$error_line."<br/> 
                      <b>Date:</b> ".date("D M j G:i Y")."<br/><br/> 
                      Error opening ".$this->TemplateDir.", directory does not exist."; 
                      return die($error); // Returns $error. 
              } // End ElseIf. 
          } // End Function. 
           
      
       
      	function inputFile($files){
      	
      	if (sizeof($files) > 0) // If the array of vars is not emtpy. 
              { 
      		
      		foreach ($files as $key => $file) // Loops through the array. 
      		{ 
      		
      		$this->Template = str_replace('{include file="'.$key.'"}', "<?php include(\"$file\"); ?>", $this->Template);
      		$this->Template = str_replace("{include file='".$key."'}", "<?php include(\"$file\"); ?>", $this->Template);
      
      		
      		}
      					
      		} 
      	
      	}
      	
      	
      
      
         function ReplaceVars($vars=array(), $error_line = 0, $erro_file = '') 
          { 
              if (sizeof($vars) > 0) // If the array of vars is not emtpy. 
              { 
      		
      		foreach ($vars as $var => $contentaar) // Loops through the array. 
      		{ 
      			
      		if (is_array($contentaar)){
      			
      			$this->Template=str_replace("{".$var."}", "", $this->Template);
      			$this->Template=str_replace("{/".$var."}", "", $this->Template);					
      			
      			
      			$this->ReplaceVars($contentaar);
      			
      		
      		}
      		
      		else {
      		
      			$this->Template=str_replace("{".$var."}", $contentaar, $this->Template); 
      			
      			
      			}
      		}
      					
              
      		
      		
      		
      		
      		
      		
      		
      		
      		
      		} 
              else // Else the array of vars is empty 
              { 
                  $error = "<b>File:</b> ".$erro_file."<br/> 
                  <b>Line:</b> ".$error_line."<br/> 
                  <b>Date:</b> ".date("D M j G:i Y")."<br/><br/> 
                  Error no tags destined for replacemnt."; 
                  return die($error); // Returns $error. 
              } // End Else. 
          } // End Function. 
           
          function Compile() 
          { 
              eval("?>".$this->Template."<?");  
          } 
      }  
      ?> 
      


      kullanılışı
      <?php 
      require_once("deneme1.php");  
      $TemplateEngine = new basicTemplateEngine; // This calls our TemplateEngine class. 
      $TemplateEngine->SelectTemplateFile('example', __LINE__, __FILE__); // load example.tpl 
      $TemplateEngine->inputFile(array("file1"=>"file1.tpl","file2"=>"file1.php"));
      $TemplateEngine->ReplaceVars(array( 
      'name' => 'Furkan', 
      'title' => 'Sayfa Başlığı', 
      'message' => 'Merhabnalar.', 
      'message2' => array('name1' =>'Furkan', 
      					'name2' =>array("name3"=>"Çelik","name4"=>array("name5"=>"BFÇ")),
      ), 
      ), __LINE__, __FILE__); 
      $TemplateEngine->Compile(); 
      ?>
      


      tpl dosyası

      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
      <title>{title}</title>
      </head>
      <body>
      {include file="file1"}
      
      {message2}
      {name1}
      	{name2}
      		{name3}
      		{name4}
      			{name5}
      		{/name4}
      	{/name2}
      {/message2}
      
      {include file='file2'}
      </body>
      </html>
      



      NASIL OLMUŞ SİZCE?
      10 yıl önce yazılmış 10 yıl önce güncellenmiş
    • xuma adlı üyenin fotoğrafı xuma
      :) Güzel olmuş.Ama ben <?=$a;?> yazmayı tercih ediyorum hala :)
      10 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      include'yide yaptım ama mesela kullanıcıları çekeceğim şu şekilde

      <tr>
      <td>1</td>
      <td>admin</td>
      </tr>

      <tr>
      <td>2</td>
      <td>user</td>
      </tr>

      <tr>
      <td>3</td>
      <td>furkan</td>
      </tr>
      .
      .
      .


      böle çekeceğim mesela yukardaki sınıfta diziye bi anahtar atamak lazım we o anahtarı çekiyor diziyi yazınca direk çekmiyor
      mesela
      $arr = array("1","2","3","4","5");
      bunu gönderince tpl'ye
      {section name=n loop=$aar}
      {$aar[n]}
      {/section}

      bu tarz gönderme yapılabilir burda
      12345 yazması gerek ekrana bunu yapamadım bunu yaparsam <?=$a;?> ya gerek kalmaz :)
      eğer yapamazsam foreach döngülerini falan tpl dosyasında ypmk zrnda kalacağım .s
      10 yıl önce yazılmış

Cevaplar

Hiç cevap bulunamadı.