A super easy PHP Framework for web development!
				https://github.com/exacti/phacil-framework
			
			
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							94 lines
						
					
					
						
							2.4 KiB
						
					
					
				
			
		
		
	
	
							94 lines
						
					
					
						
							2.4 KiB
						
					
					
				<?php 
 | 
						|
/**
 | 
						|
 * Copyright © 2023 ExacTI Technology Solutions. All rights reserved.
 | 
						|
 * GPLv3 General License.
 | 
						|
 * https://exacti.com.br
 | 
						|
 * Phacil PHP Framework - https://github.com/exacti/phacil-framework
 | 
						|
 */
 | 
						|
 | 
						|
namespace Phacil\Framework\MagiQL\Builder\Syntax;
 | 
						|
 | 
						|
use Phacil\Framework\MagiQL\Builder;
 | 
						|
use Phacil\Framework\MagiQL\Manipulation\AbstractBaseQuery;
 | 
						|
 | 
						|
/**
 | 
						|
 * Class AbstractBaseWriter.
 | 
						|
 */
 | 
						|
abstract class AbstractBaseWriter
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @var Builder
 | 
						|
     */
 | 
						|
    protected $writer;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var PlaceholderWriter
 | 
						|
     */
 | 
						|
    protected $placeholderWriter;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var ColumnWriter
 | 
						|
     */
 | 
						|
    protected $columnWriter;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param Builder    $writer
 | 
						|
     * @param PlaceholderWriter $placeholder
 | 
						|
     */
 | 
						|
    public function __construct(\Phacil\Framework\MagiQL\Api\BuilderInterface $writer, PlaceholderWriter $placeholder)
 | 
						|
    {
 | 
						|
        $this->writer = $writer;
 | 
						|
        $this->placeholderWriter = $placeholder;
 | 
						|
 | 
						|
        $this->columnWriter = WriterFactory::createColumnWriter($writer, $placeholder);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param AbstractBaseQuery $class
 | 
						|
     *
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    public static function writeQueryComment(AbstractBaseQuery $class)
 | 
						|
    {
 | 
						|
        $comment = '';
 | 
						|
        if ('' !== $class->getComment()) {
 | 
						|
            $comment = $class->getComment();
 | 
						|
        }
 | 
						|
 | 
						|
        return $comment;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param AbstractBaseQuery $class
 | 
						|
     * @param \Phacil\Framework\MagiQL\Api\BuilderInterface    $writer
 | 
						|
     * @param PlaceholderWriter $placeholderWriter
 | 
						|
     * @param array             $parts
 | 
						|
     */
 | 
						|
    public static function writeWhereCondition(
 | 
						|
        AbstractBaseQuery $class,
 | 
						|
        \Phacil\Framework\MagiQL\Api\BuilderInterface $writer, 
 | 
						|
        PlaceholderWriter $placeholderWriter,
 | 
						|
        array &$parts
 | 
						|
    ) {
 | 
						|
        if (!is_null($class->getWhere())) {
 | 
						|
            $whereWriter = WriterFactory::createWhereWriter($writer, $placeholderWriter);
 | 
						|
            $parts[] = "WHERE {$whereWriter->writeWhere($class->getWhere())}";
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param AbstractBaseQuery $class
 | 
						|
     * @param PlaceholderWriter $placeholderWriter
 | 
						|
     * @param array             $parts
 | 
						|
     */
 | 
						|
    public static function writeLimitCondition(
 | 
						|
        AbstractBaseQuery $class,
 | 
						|
        PlaceholderWriter $placeholderWriter,
 | 
						|
        array &$parts
 | 
						|
    ) {
 | 
						|
        if (!is_null($class->getLimitStart())) {
 | 
						|
            $start = $placeholderWriter->add($class->getLimitStart());
 | 
						|
            $parts[] = "LIMIT {$start}";
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 |