💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۵ محمدرضا
تعریف class برای diePage
محسن موحد حل شده توسط محسن موحد

سلام

اگه بخوایم برای تابع diePage درون فایل style.css کلاس تعریف کنیم، چیکار باید کرد؟

سلام.

تفاوتی با حالت عادی نداره، کافیه اتربیوت کلاس رو اضافه کنید:

echo '<div class="class-name">' . $msg . '</div>';

 

محسن موحد ۲۷ فروردین ۱۳۹۹، ۱۹:۴۶

نه!

بذارید سوالمو واضح‌تر بپرسم:

 من داخل فایل helpers.php برای تابع diePage کلاس تعریف کردم و استایل هامو به فایل css پروژه (style.css) اضافه کردم، الان برای اینکه استایل‌ها درون صفحه index.php نمایش داده بشه لازمه که اول tpl-index بارگذاری بشه بعد init یعنی:

<?php
include "tpl/tpl-index.php";
include "bootstrap/init.php";

اول باید قالب که شامل فایل style.css هستش بارگذاری بشه بعد فایل helpers.php که درون init است اون تابع رو با استایلش نشون بده.

که کار بالا اشتباه هستش و مشکلات دیگه ای درست میکنه.

چطور باید این مشکل رو حل کرد؟

محمدرضا ۲۷ فروردین ۱۳۹۹، ۲۰:۳۵

بجای یک فایل tpl-index.php میتونید فایل هارو در چند فایل بشکنید:

tpl-header.php

tpl-body.php

tpl-footer.php

محسن موحد ۲۷ فروردین ۱۳۹۹، ۲۰:۵۰

فایل init

<?php
include "config.php";
include "constants.php";
include "libs/helpers.php";
/** Database Connection */ 
try {
    $pdo = new PDO("mysql: host=$db_config->host; dbname=$db_config->db; charset=UTF8mb4", $db_config->user, $db_config->pass);
} catch (PDOException $e) {
    diePage("Connection Failed: " . $e->getMessage());
}
include "libs/lib-Auth.php";
include "libs/lib-Tasks.php";

فایل helpers

<?php 
/** Show messages and die */
function diePage($msg) 
{
    die("<div class='err'>$msg</div>");
}

فایل index

<?php
include "bootstrap/init.php";
include "tpl/tpl-index.php";

خروجی هم که بدون استایل هستش.

محمدرضا ۲۷ فروردین ۱۳۹۹، ۲۰:۵۹

راه‌های متفاوتی واسه اینکار هست و هر چقدر مباحث جلوتر بره و مخصوصا توو شی گرایی که برسیم، دستمون بازتر هست واسه تولید و مدیریت چنین پیج هایی.

یک راه اینه که پیج tpl-index رو در قسمتهای مجزا تولید کنید تا بتونید برای diePage هم که از اسمش پیداس خودش میتونه یک پیج مدیریت خطا باشه، header و body و footer تولید کنید.

اما ایده ای که برای این قسمت من معرفی میکنم اینه که داخل فایل helpers.php یک تابع با اسم registerCssFile بسازید: (custom کردن ایده با خودتون)

function registerCssFile($files)
{
	if(!empty($files))
	{
		foreach ($files as $file)
			echo '<link rel="stylesheet" type="text/css" href="'. $file .'" >' . PHP_EOL;
	}
}

میتونی داخل فایل config.php هم فایل هارو تعریف کنی. برای مثال:

$cssFiles = [
	'http://mysite.com/assets/css/style1.css',
	'http://mysite.com/assets/css/style2.css',
	'http://mysite.com/assets/css/style3.css',
	'http://mysite.com/assets/css/style4.css',
];

و برای استفاده میتونید داخل tpl-index بجای نوشتن دستی فایل ها، بصورت داینامیک، فایل‌های css رو مدیریت کنید و به پیج اضافه کنید:

<head>
	<title></title>
	<?php registerCssFile($cssFiles); ?>
</head>

 

و تابع diePage هم مثلا به این شکل:

function diePage($msg) 
{
    registerCssFile(['http://mysite.com/assets/css/error.css']);
    die("<div class='err'>$msg</div>");
}

یا به این شکل:

function diePage($msg, $cssFiles = null) 
{
    registerCssFile($cssFiles);
    die("<div class='err'>$msg</div>");
}

 

بهترین پاسخ
محسن موحد ۲۷ فروردین ۱۳۹۹، ۲۱:۵۰